- •Иркутский государственный университет путей сообщения кафедра “информатика” программирование на языке java
- •Иркутск
- •Содержание
- •Предисловие
- •Алфавит языка
- •Ключевые слова
- •Типы данных
- •Литералы (константы)
- •Комментарии
- •Переменные
- •Математические функции
- •Выражения
- •Выражения целого типа
- •Примеры записи выражений целого типа:
- •Примеры вычислений выражений целого типа:
- •Выражения действительного типа
- •Примеры записи выражений действительного типа
- •Примеры вычислений выражений действительного типа:
- •Выражения логического типа
- •Операторы присваивания
- •Variable имяПеременной might not have been initialized
- •Примеры записи операторов присваивания:
- •Ввод и вывод данных
- •Ввод и вывод с помощью диалоговых окон
- •Import javax.Swing.*;
- •Консольный вывод
- •Консольный ввод с помощью класса Scanner
- •Import java.Util.*; //импорт пакета
- •Структура программы
- •Import javax.Swing.*;
- •Import java.Util.*;
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Пример записи алгоритма:
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкции
- •Import javax.Swing.*;
- •Int c, y1, y2, kl, day, month, year;
- •Часто встречающиеся ошибки программирования:
- •Import javax.Swing.*;
- •Переключатель
- •Int month;
- •Часто встречающиеся ошибки программирования:
- •Бесконечные циклы
- •Циклы с предусловием
- •Программа
- •Программа
- •Часто встречающиеся ошибки программирования:
- •Циклы с постусловием
- •Программа
- •Int month;
- •Циклы с параметром
- •Действия цикла:
- •Операторы прерывания break, continue, return, System.Exit
- •Структуры данных
- •Массивы
- •Import javax.Swing.*;
- •Import java.Util.*;
- •Int n, m, matrMin, matrMax;
- •Import javax.Swing.*;
- •Import java.Util.*;
- •Int n, vectorMin, vectorMax, temp;
- •VectorMin, vectorMax, n);
- •Import javax.Swing.*;
- •Import java.Util.*;
- •Int n, vectorMin, vectorMax, temp;
- •VectorMin, vectorMax, n);
- •Методы для работы с массивами
- •Класс String
- •Методы для работы со строками класса String
- •Класс StringBuffer
- •Методы для работы со строками класса StringBuffer
- •Import java.Io.*;
- •Import javax.Swing.*;
- •Import java.Io.*;
- •Import javax.Swing.*;
- •Обработка исключительных ситуаций
- •If (переменная name вышла за диапазон)
- •Import java.Io.*;
- •Import javax.Swing.*;
- •Import java.Io.*;
- •Import javax.Swing.*;
Вариант 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– номер программной строки с ошибкой.