Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
ТЕХНОЛОГИИ ДОСТ... 63090
Имитационное мо... 58363
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

Пользователей: 13,092
новичок: VinDrossel
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса обработки заданий на вычислительном центре на GP...
Моделирование работы перекрёстка по регулированию движения на GPSS + Поя...
Моделирование ЭВМ на GPSS (три класса заданий) + Пояснительная записка

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Несколько примеров применения класса Scanner
Включение класса Scanner в язык Java превратило прежде утомительное и скучное занятие в легкое и приятное. Для того чтобы понять, почему это произошло, рассмотрим несколько примеров. В листинге 9.12 вычисляется среднее арифметическое последовательности целых значений, вводимых с клавиатуры.
Листинг 9.12. Использование класса Scanner для вычисления среднего арифметического
import java.util.*;

class AvgNums {
public static void main(String args[]) {
Scanner conin = new Scanner(System.in);

int count = 0;
double sum = 0.0;

System.out.println("Enter numbers to average.");

// Read and sum numbers.
while(conin.hasNext()) {
if(conin.hasNextDouble()) {
sum += conin.nextDouble();
count++;
}
else {
String str = conin.next();
if(str.equals("done")) break;
else {
System.out.println("Data format error.");
return;
}
}
}

System.out.println("Average is " + sum / count);
}
}



В листинге 9.12 числа считываются с клавиатуры и суммируются до тех пор, пока пользователь не введет строку "done". Эта строка прекращает ввод и на экран выводится среднее арифметическое введенных чисел. Далее приведен образец вывода программы из листинга 9.12:
Enter numbers to average.
1.2
2
3.4
4
done
Average is 2.65



В программе из листинга 9.12 считываются числа, пока не обнаружена лексема, которая не соответствует корректному значению типа double. Когда это происходит, программа проверяет, не равна ли эта лексема строке "done". Если это так, программа завершается корректно. В противном случае выводится сообщение об ошибке.
Обратите внимание на то, что числа читаются с помощью вызова метода nextDouble(). Этот метод считывает любое число, которое может быть преобразовано в тип double, включая целые значения, такие как 2, и значения с плавающей точкой, такие как 3.4. Таким образом, у числа, считываемого методом nextDouble(), необязательно должна быть десятичная точка. Этот базовый принцип положен в основу всех методов next. Они могут находить соответствие и читать данные любого формата, который способен представлять данные требуемого типа.
Приятная особенность, свойственная классу Scanner, заключается в том, что способ, применяемый для считывания данных из одного источника, используется для чтения и из другого источника. В листинге 9.13 приведен пример, в котором подсчитывается среднее арифметическое последовательности чисел, содержащихся в текстовом файле.
Листинг 9.13. Применение класса Scanner для расчета среднего арифметического чисел, считываемых из файла
import java.util.*;
import java.io.*;

class AvgFile {
public static void main(String args[])
throws IOException {

int count = 0;
double sum = 0.0;

// Write output to a file.
FileWriter fout = new FileWriter("test.txt");
fout.write("2 3.4 5 6 7.4 9.1 10.5 done");
fout.close();

FileReader fin = new FileReader("Test.txt");

Scanner src = new Scanner(fin);

// Read and sum numbers.
while(src.hasNext()) {
if(src.hasNextDouble()) {
sum += src.nextDouble();
count++;
}
else {
String str = src.next();
if(str.equals("done")) break;
else {
System.out.println("File format error.");
return;
}
}
}

fin.close();
System.out.println("Average is " + sum / count);
}
}



В следующей строке приведен вывод программы из листинга 9.13:
Average is 6.2

Вы можете использовать класс Scanner для чтения данных разных типов, даже если порядок их следования заранее неизвестен. У вас есть возможность проверить тип данных, доступных для чтения, перед их считыванием. Рассмотрим программу, приведенную в листинге 9.14.

Листинг 9.14. Применение класса Scanner для считывания данных разных типов, хранящихся в файле
import java.util.*;
import java.io.*;

class ScanMixed {
public static void main(String args[])
throws IOException {

int i;
double d;
boolean b;
String str;

// Write output to a file.
FileWriter fout = new FileWriter("test.txt");
fout.write("Testing Scanner 10 12.2 one true two false");
fout.close();

FileReader fin = new FileReader("Test.txt");

Scanner src = new Scanner(fin);


// Read to end.
while(src.hasNext()) {
if(src.hasNextInt()) {
i = src.nextInt();
System.out.println("int: " + i);
}
else if(src.hasNextDouble()) {
d = src.nextDouble();
System.out.println("double: " + d);
}
else if(src.hasNextBoolean()) {
b = src.nextBoolean();
System.out.println("boolean: " + b);
}
else {
str = src.next();
System.out.println("String: " + str);
}
}
fin.close();
}
}




Далее приведен вывод результатов работы программы из листинга 9.14:
String: Testing
String: Scanner
int: 10
double: 12.2
String: one
boolean: true
String: two
boolean: false




При считывании данных разных типов, как в листинге 9.14, необходимо внимательно следить за порядком вызова методов next. Например, если в цикле поменять порядок вызова методов nextInt() и nextDouble(), оба числа будут считаны как значения типа double, поскольку метод nextDoublе() приводит в соответствие любую строку, которая может быть представлена как тип double.
Опубликовал Kest January 13 2009 22:12:58 · 0 Комментариев · 32905 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Delphi. Учимся на...
Animation (Пример...
Print Grid
Midi
Программирование ...
Разработка клиент...
Библия для програ...
Алгоритмы шифрова...
Приемы программир...
WAP версия сайта
Учебник по создан...
Averaging [Исходн...
DS_Group
Mass Photo Upload
Borland Delphi 6....
Песочные часы
Цветной Grid
DAlarm
CwstatusBar
ShadelLabel

Топ загрузок
Приложение Клие... 100481
Delphi 7 Enterp... 87905
Converter AMR<-... 20082
GPSS World Stud... 13574
Borland C++Buil... 12072
Borland Delphi ... 8676
Turbo Pascal fo... 7048
Visual Studio 2... 5005
Калькулятор [Ис... 4912
FreeSMS v1.3.1 3545
Случайные статьи
Запуск программ на...
PDF (Acrobat)
3. Запишите в табл...
BUFFER (ВОЗОБНОВИТ...
Файл HelloAndroidA...
Символы, используе...
Правильная настрой...
Схлопывание пузырьков
Веселый отдых
Объекты имеют стат...
Определите тип инф...
Чтение сообщения и...
Приемы, которые тр...
Пицца Подольск
Слушание
Стандарт POSIX
Игры для программиста
Операторы класса n...
Какое было принято...
ДАЛЬНЕЙШАЯ ЭВОЛЮЦИ...
Отображение в Dat...
Повышенная надежно...
7.2. Поиск в лаб...
управления DataGrid
Социальная инженерия
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?