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

Вариант 2 – с использованием операции конъюнкции

s = z; s = z;

ЕСЛИ (x > y) & (x > z) if ((x > y) && (x > z))

ТО s = x; s=x;

ЕСЛИ (y > x) & (y > z) if ((y >x) && (y > z))

ТО s = y; s=y;

2.по заданной дате (день, месяц, год) определить день недели, приходящийся на нее:

package javaapplication1;

// Импорт библиотеки графических компонентов Swing

Import javax.Swing.*;

public class JavaApplication1 // описание главного класса

{

public static void main(String[] args) // описание

// главного метода

// main этого класса

{

// описание переменных:

Int c, y1, y2, kl, day, month, year;

String input, text;

// вызов диалогового окна ввода исходных данных

input=JOptionPane.showInputDialog("Введите день:");

// преобразование из строкового значения в целое

day=Integer.parseInt(input);

input=JOptionPane.showInputDialog("Введите месяц:");

month=Integer.parseInt(input);

input=JOptionPane.showInputDialog("Введите год:");

year=Integer.parseInt(input);

// формирование строки вывода

text="Вы ввели:\nдень - " + day + "\nмесяц: " + month + "\nгод - " + year;

// вызов диалогового окна эхо-печати

JOptionPane.showMessageDialog(null, text);

// вычисление значений переменных

kl=0;

c=0;

y1=year/100;

y2=year-y1*100;

if ((y2==0) && (y1%4==0))

c=1;

if ((y2!=0) && (y2%4==0))

c=1;

if ((c==1) && (month==1) || (month==2))

kl=1;

if ((c==0) && (month==1) || (month==2))

kl=2;

c=(int)Math.ceil(365.25*y2) + (int)Math.ceil(30.56*month) + day + kl;

c %= 7;

// формирование строки вывода

if (c==0)

text="Это понедельник";

if (c==1)

text="Это вторник";

if (c==2)

text="Это среда";

if (c==3)

text="Это четверг";

if (c==4)

text="Это пятница";

if (c==5)

text="Это суббота";

if (c==6)

text="Это воскресенье";

// вызов диалогового окна вывода переменных

JOptionPane.showMessageDialog(null, text);

}

}

По принятому в Javaсоглашению, ветвьelseвсегда относится к ближайшему предшествующему ему незанятомуif:

if (n>0)

if (m % n > 2)

m -= n;

else m += n;

else m %= n;

В данном случае ветвь else m += nотносится кif (m % n > 2),а ветвьelse m %= nотносится кif (n > 0).

При переходе с ПаскалянаJavaпрограммисты часто допускают ошибки при формировании условия в оператореif, путая две операции:

=присваивания и

==сравнения:

if (a==b)

System.out.printf(“\nЭти величины равны между собой”);

else System.out.printf(“\nЭти величины не равны между собой”);

Это правильное сравнение значений двух переменных.

Перепишем это сравнение с ошибкой:

if (a=b)

System.out.printf(“\nЭти величины равны между собой”);

else System.out.printf(“\nЭти величины не равны между собой”);

Компилятор обработает эту ошибку и выдаст сообщение:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types

required: boolean

found: double

at javaapplication1.JavaApplication1.main(JavaApplication1.java:25)

Здесь 25– номер программной строки с ошибкой.