13 августа 2011 13.08.11 18 4352

Туториал по java №3

+18

<< >>

Условия

Условие в программировании – выражение, которое принимает 2 значения – true/false.
Эти значения можно хранить в переменной типа boolean (по имени математика Джоржа Буля).

Условный оператор

Условный оператор бывает двух типов: полный и краткий. Рассмотрим оба:
Краткая форма:

if(<условие>){
        <код>
}

Код выполняется если условие верно(true).

Полная форма:

if(<условие>){
<код 1>
}
else{
<код 2>
}

Если условие верно(true), то выполняется код 1. Иначе – код 2.

Есть еще один способ написать условие в java, но мы с ним познакомимся позже, давайте перейдем к способам задания условий.

Способы задания условий

Базовые проверки:

Равно — == (Символ = означает присвоение!)
Не равно — !=
Меньше, больше, меньше или равно, больше или равно — <, >, <=, >=

Также в качестве условий могут выступать переменные типа boolean

Boolean b = true;
if(b){
        <…>
}

И результаты работы функций (если они принадлежат к типу boolean):
К примеру, у каждой строки есть метод isEmpty(), проверяющий, пустая ли это строка.

String s = "";
if(s.isEmpty()){
        <…>
}

Второй способ проверки условий

Рассмотрим следующую программу (она проверяет, является ли число, введенное пользователем, нулем и выводит ответ):

  1. import java.util.Scanner;
  2.  
  3. public class Tutorial {
  4.         public static void main(String[] args) {
  5.                 int num = new Scanner(System.in).nextInt();
  6.                 if(num==){
  7.                         System.out.print(«Ноль»);
  8.                 }
  9.                 else{
  10.                         System.out.print(«Не ноль»);
  11.                 }
  12.                
  13.         }
  14.  
  15. }

С виду все легко, но функция вывода повторяется дважды. Мы же программисты! А программисты люди ленивые, поэтому они придумали МЕГА укороченный условный оператор:

Краткая форма: <Условие>?<замена если true>
Полная форма: <Условие>?<замена если true>:<замена если false>

Вся конструкция во время исполнения заменяется на соответствующую часть. Короче просто посмотрите и протестируйте:

  1. import java.util.Scanner;
  2.  
  3. public class Tutorial {
  4.         public static void main(String[] args) {
  5.                 int num = new Scanner(System.in).nextInt();
  6.                 System.out.print(num == ?«Ноль»:«Не ноль»);
  7.                
  8.         }
  9.  
  10. }

Логические операции

Над переменными и выражениями типа Boolean можно проводить логические операции:
И, ИЛИ, НЕ; &&,||,! в java соответственно(обычно для проверки нескольких условий сразу)

Действуют они также как и связки в русском языке:
И – должны выполняться И одно И второе условия
ИЛИ – должны выполняться ИЛИ одно ИЛИ второе условия (или оба)
НЕ – отрицание
Пускай A – одно условие, а B – второе.
Тогда построим таблицы для каждой функции:

A&&B->результат
false&&false->false
true&&false->false
false&&true->false
true&&true->true

A||B->результат
false||false->false
true||false-> true
false||true-> true
true||true->true

!A->результат
!false->true
!true-> false

Тутолиалы-то я пишу, но не знаю, понимают меня или нет. Поэтому я кину мини-задачку, а вы попробуйте в пм/комментах ее решить.

Надо написать калькулятор, поддерживающий все четыре основные мат. операции + синус. Выбор операции осуществляется вводом ее номера(1/2/3/4/5). Программа должна быть дружественна к пользователю, объяснять все форматы ввода и корректно отвечать на ошибки (кроме ввода неверного типа данных).


Лучшие комментарии

  1. import java.util.Scanner;
  2. public class Calculator {
  3.  
  4.         public static void main(String[] args) {
  5.                 double n1;
  6.                 int num;
  7.         Scanner scan = new Scanner(System.in);
  8.                 System.out.print("1. +\n" + "2. -\n" + "3. *\n" + "4. /\n" + "5. sin(x)\n");
  9.                 System.out.print("Make your choise:\n");
  10.                 num = scan.nextInt();
  11.                 if ((num > 5) || (num < 1))
  12.                         System.out.print("Error");
  13.                         else if (num == 5)
  14.                                  {
  15.                                         System.out.print("Enter a number: x= ");
  16.                                         n1 = scan.nextDouble();
  17.                                         System.out.print("sin(" + n1 + ") = " + Math.sin(n1));
  18.                                  }           
  19.                                         else
  20.                                         {
  21.                                                 double n2;
  22.                                                 System.out.print("Enter first number\n");
  23.                                                 n1 = scan.nextDouble();
  24.                                                 System.out.print("Enter second number\n");
  25.                                                 n2 = scan.nextDouble();
  26.                                                 if (num == 1)
  27.                                                         System.out.print(n1 + " + " + n2 + " = " + (n1+n2));
  28.                                                                 else if (num == 2)
  29.                                                                         System.out.print(n1 + " — " + n2 + " = " + (n1-n2));
  30.                                                                         else if (num == 3)
  31.                                                                                 System.out.print(n1 + " * " + n2 + " = " + (n1*n2));
  32.                                                                                         else if (num == 4)
  33.                                                                                                 System.out.print(n1 + " / " + n2 + " = " + (n1/n2));
  34.                                         }
  35.         }
  36.  
  37. }
ОК, только ты мне обещал
public class Tutorial {
public static void main(String[] args) {

Это — следующий тутор.

остальное потом

Да, да, меня все преподы ненавидят xD Не люблю писать не понимая…
А так спасибо, ато за книги садиться летом вломы, а тут твои туториалы как нельзя кстати^_^
Давно хотел научится делать програмки!
if(num==)
тут идёт проверка переменной на значение по умолчанию? (т.е если num, к примеру, имеет тип string, то это будет проверка на null?
Теги такие милые^^ Калькулятор так калькулятор…
круто! продолжай в том же духе!
Молодца! В следующем туторе покажу пару вещей на примере твоего кода, ок?
оу… такого не знаю, но это из ряда неоч известных вещей, так что лучше уж нажать 4 кнопки, хотя-бы для читабельности.

[UPD]: Syntax error on token "==", Expression expected after this token. Все-таки нельзя.
Подскажите что я сделал не так?
такая же ошибка
Кстати, сравните кол-во комментов под первым и под вторым тутором. Как только начинается что-то серьезное, люди убегают сломя голову)

И, наверно, в январе у меня появится звуковуха и микрофон :-D
в смысле, если тип num-string, то if(num==) эквивалентно if(num== null) (т.е значению по умолчанию)?
Читай также