Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Java.doc
Скачиваний:
836
Добавлен:
04.06.2015
Размер:
5.55 Mб
Скачать

Ввод и вывод с помощью диалоговых окон

Графические средства ввода и вывода содержатся в пакете javax.swing, который подключается к программе командой

Import javax.Swing.*;

Этот пакет содержит класс JOptionPane, позволяющий создавать и отображать диалоговые окна четырех типов:

  • для ввода данных showInputDialog(),

  • для вывода информационных сообщений showMessageDialog(),

  • для получения подтверждения определенных действий,

  • для выполнения настроек.

Вводданных диалоговым окномshowInputDialog() осуществляется с помощью переменной-строки:

String input, output; // имя может быть любым

input=JOptionPane.showInputDialog("Введите значение n:”);

При этом на экране появится окно ввода:

В поле ввода нужно напечатать необходимое значение и нажать на кнопку OK:

При этом переменная-строка input(имя может быть любым) примет значение строки”15”. Осталось перевести эту строку в нужный тип данных:

int n;

n=Integer.parseInt(input); // перевод строки в данное целого типа

Для выводаданных используется окно вывода:

output="Введенное значение переменной n:\n" + n; // строка вывода

JOptionPane.showMessageDialog(null, output);

При этом на экране появится окно вывода:

Первый аргумент метода nullобязателен, второй аргументoutput (имя может быть любым)выводимая строка, которая может содержать текст,ESC-последовательности (\n) и выводимые данные.

Третьим и четвертым аргументами могут быть заголовок окна и тип значка (рисунка) в окне:

String title=”Входные данные”; // заголовок окна

int type=JOptionPane.ERROR_MESSAGE; // тип значка

output="Введенное значение переменной n:\n" + n;

JOptionPane.showMessageDialog(null, output, title, type);

В данном случае значок сообщает об ошибке (JOptionPane.ERROR_MESSAGE).

Кроме такого значка, могут быть следующие:

информационный(по умолчанию)JOptionPane.INFORMATION_MESSAGE;

знак вопроса JOptionPane.QUESTION_MESSAGE;

предупреждение JOptionPane.WARNING_MESSAGE;

без значка JOptionPane.PLAIN_MESSAGE;

Консольный вывод

Консольный вывод (вывод на экран терминала) осуществляется методами print(), println(), printf(). Для этого используется статическое полеoutклассаSystem:

System.out.println("Лабораторная работа №1");

System.out.println("Вариант №10");

System.out.println("Группа ПИ-12-1");

System.out.println("Студент Пупкин Василий");

System.out.println(); //пропуск пустой строки

В окне вывода появится:

Лабораторная работа №1

Вариант №10

Группа ПИ-12-1

Студент Пупкин Василий

С помощью метода print() (println() – с переходом на новую строку) можно выводить на консоль данные любых типов: символы, строки, целые и действительные числа, логические значения, объекты:

int n=-5;

double x=0.314259265e+1;

System.out.println(“n=” + n); // бесформатный вывод

System.out.println(“x=” + x);

В окне вывода появится:

n=-5

x=3.14259265 // точность вывода – восемь цифр дробной части

Метод printf()позволяет выполнятьформатированныйвывод. Он полностью аналогичен функцииprintf()языкаСи:

System.out.printf(“формат”, аргументы);

где аргументы– список вывода – имена переменных, значения которых выводятся,

формат– представляет собой строку, содержащую сообщения, которые должны быть выведены на экран, управляющие символы (ESC-последовательности) испецификации преобразованийвыводимых данных (аргументов):

System.out.printf(“\nJava – язык программирования XXI века\n”);

При выполнении этой функции курсор в окне вывода перейдет на новую строку (\n), будет выведено сообщение:

Java – язык программирования XXI века

и курсор снова перейдет на новую строку. Как видно, ESC-последовательности включаются в строку, но сами на экран не выводятся.

Спецификации преобразованийзадают вид выводимых данных. Они состоят из символа%испецификаторов:

d- для данныхцелоготипа вдесятичнойсистеме счисления,

x- для данныхцелоготипа вшестнадцатеричнойсистеме счисления,

f- для данныхдействительноготипа в форме сфиксированнойзапятой,

e- для данныхдействительноготипа в форме сплавающейзапятой,

g- наиболее короткое представление из fиe,

с- для данныхсимвольноготипа,

s- длястрок,

b- длялогическихзначений,

t- длядаты и времени.

Очередная спецификация в формате относится к очередному аргументу в списке вывода. Спецификации могут быть разделены пробелами, запятыми или идти подряд:

char b=’A’;

int i=-123;

double x=123.456;

String str=”Студент Пупкин”;

System.out.printf(“\nb=%c”, b);

System.out.printf(“\n%f, %e, %g”, x, x, x);

System.out.printf(“\n%s”, str);

System.out.printf(“\n%d %f %c”, i, x, b);

В окне вывода появится:

b=A

123,456000, 1,234560e+02, 123,456

Студент Пупкин

-123 123,456000 A

Таким образом, при выводе положительных чисел знак +не печатается. Если вещественное число выводится в формеf, то в его дробной части записываетсяшестьцифр, а если в формеe– то в его целой части остаетсяоднацифра, все остальные записываются в дробную часть. Показатель степени (после буквыe) –двецифры.

В спецификациях после символа %можно указать общее количество позиций, отводимых для вывода данного числа (строки) –длинуполя вывода. Если длина выводимого числа (строки) меньше поля вывода, то оно прижимается кправомукраю:

System.out.printf(“\n%20c”, b);

System.out.printf(“\n%20s”, str);

System.out.printf(“\n%20d”, i);

В окне вывода появится:

A

Студент Пупкин

-123

При выводе данных действительноготипа можно указывать как длину поля вывода, так и количество цифр его дробной части (точностьвывода). При этом число округляется до заданной точности, а избыточные позиции слева заполняются нулями. В любом случае определяющей является точность вывода, при этом общую длину поля вывода можно даже не задавать:

System.out.printf(“\n%7.2f”, x);

System.out.printf(“\n%.1f”, x);

System.out.printf(“\n%.4e”, x);

System.out.printf(“\n%15.3f”, x);

В окне вывода появится:

123,46

123,5

1,2346e+02

123,456

При выводе строкможно указывать как общую длину поля вывода, так и количество выводимых символов строки:

System.out.printf(“\n%10.3s”, str);

В окне вывода появится:

Сту

Для удобства вывода в строковую константу метода System.out.printf()можно включать как текст, так и спецификации:

int age=17, rost=178;

double weight=67.5;

String name="Петр";

System.out.printf("\nМеня зовут %s, мне %d лет", name, age);

System.out.printf("\nМой рост %d см, мой вес %f кг\n", rost, weight);

В окне вывода появится:

Меня зовут Петр, мне 17 лет

Мой рост 178 см, мой вес 67,500000 кг

С помощью метода System.out.printf() удобно выводитьтекущуюдату и время. При этом используются следующие спецификации преобразования:

tc- полная дата и время,

tF- дата в форматегод-месяц-число,

tY- год четырьмя цифрами,

ty- год двумя последними цифрами,

tB- месяц словами,

tm- месяц двумя цифрами,

te- число месяца,

tA-день недели словами,

tT- время в форматечасы:минуты:секунды,

tR- время в форматечасы:минуты.

Date nom=new Date(); // создание объекта класса Date()

System.out.printf("Дата - %tс\n", nom);

System.out.printf("Год - %tY\n", nom);

System.out.printf("Месяц - %tB\n", nom);

System.out.printf("Число - %te\n", nom);

System.out.printf("День недели - %tA\n", nom);

System.out.printf("Время - %tT\n", nom);

В окне вывода появится:

Дата - Пн июл 02 14:32:52 IRKST 2012

Год - 2012

Месяц - Июль

Число - 2

День недели - понедельник

Время - 14:32:52