Range if statement java

Java If . Else

You already know that Java supports the usual logical conditions from mathematics:

  • Less than: a < b
  • Less than or equal to: a
  • Greater than: a > b
  • Greater than or equal to: a >= b
  • Equal to a == b
  • Not Equal to: a != b

You can use these conditions to perform different actions for different decisions.

Java has the following conditional statements:

  • Use if to specify a block of code to be executed, if a specified condition is true
  • Use else to specify a block of code to be executed, if the same condition is false
  • Use else if to specify a new condition to test, if the first condition is false
  • Use switch to specify many alternative blocks of code to be executed

The if Statement

Use the if statement to specify a block of Java code to be executed if a condition is true .

Syntax

if (condition) < // block of code to be executed if the condition is true > 

Note that if is in lowercase letters. Uppercase letters (If or IF) will generate an error.

In the example below, we test two values to find out if 20 is greater than 18. If the condition is true , print some text:

Example

We can also test variables:

Example

int x = 20; int y = 18; if (x > y)

Example explained

In the example above we use two variables, x and y, to test whether x is greater than y (using the > operator). As x is 20, and y is 18, and we know that 20 is greater than 18, we print to the screen that «x is greater than y».

The else Statement

Use the else statement to specify a block of code to be executed if the condition is false .

Syntax

if (condition) < // block of code to be executed if the condition is true > else < // block of code to be executed if the condition is false > 

Example

int time = 20; if (time < 18) < System.out.println("Good day."); >else < System.out.println("Good evening."); >// Outputs "Good evening." 

Example explained

In the example above, time (20) is greater than 18, so the condition is false . Because of this, we move on to the else condition and print to the screen «Good evening». If the time was less than 18, the program would print «Good day».

The else if Statement

Use the else if statement to specify a new condition if the first condition is false .

Syntax

if (condition1) < // block of code to be executed if condition1 is true > else if (condition2) < // block of code to be executed if the condition1 is false and condition2 is true > else < // block of code to be executed if the condition1 is false and condition2 is false > 

Example

int time = 22; if (time < 10) < System.out.println("Good morning."); >else if (time < 18) < System.out.println("Good day."); >else < System.out.println("Good evening."); >// Outputs "Good evening." 

Example explained

In the example above, time (22) is greater than 10, so the first condition is false . The next condition, in the else if statement, is also false , so we move on to the else condition since condition1 and condition2 is both false — and print to the screen «Good evening».

However, if the time was 14, our program would print «Good day.»

Источник

how to write: IF statement with range of values (e.g. if 5 > x > 10, then . )

send pies

posted 13 years ago

  • Report post to moderator
  • Hey, got a question for you guys.

    How do I write an if statement for a variable in java with two constraints? Like if i wanted my program to check a variable to see if it’s greater than some number and less than another?

    Java Cowboy

    Scala

    send pies

    posted 13 years ago

  • Report post to moderator
  • The && operator means «and», so you write:

    send pies

    posted 13 years ago

  • Report post to moderator
  • send pies

    posted 13 years ago

  • Report post to moderator
  • You can also use single ampersand towards the same end. Like

    However && is more efficient as it doesn’t calculate the expression after && if the first expression has failed the condition. Whilst single & calculates both the expressions.

    Источник

    How to do a number range in if statement in Java?

    send pies

    posted 8 years ago

  • Report post to moderator
  • For example: if(JTextField = 15-30) <
    do this
    >

    I know it’s simple but i have no clue how it’s done lol, any help would be appereciated

    Marshal

    send pies

    posted 8 years ago

  • Report post to moderator
  • You can’t get a text field to equal a number. You can however get a number to equal another number. You are probably best using integer arithmetic for that sort of thing because floating point arithmetic counts less well than my little grandsons. If you don’t believe me, run the program in this post.

    You can tell whether a number is less than another, or more than another, but not both together. You have to use the AND operator (you usually use the two‑keystroke version).
    You can tell whether i is less than 100 like this
    i < 100
    You can tell whether i is greater than 0 like this
    i > 0
    So you can tell both like this
    i > 0 && i < 100
    Or like this
    0 < i && i < 100
    if you like having the arrowheads the same way round. You cannot write 0 < i < 100 however.

    Источник

    В Java, используя оператор switch с диапазоном значений в каждом случае?

    В Java можно написать оператор switch, где каждый случай содержит более одного значения? Например (хотя явно следующий код не будет работать):

    Я думаю, что это можно сделать в Objective C, есть ли аналогичная вещь в Java? Или я должен просто использовать выражения if , else if вместо этого?

    17 ответов

    Java не имеет ничего подобного. Почему бы просто не сделать следующее?

    public static boolean isBetween(int x, int lower, int upper) < return lower if (isBetween(num, 1, 5)) < System.out.println("testing case 1 to 5"); >else if (isBetween(num, 6, 10))

    Это прекрасно работает и просто. Также, если вы хотите выбрать числа, не входящие в диапазон, все, что вам нужно, это если (! IsBetween . хорошая работа.

    @missingfaktor Я немного раскритиковал твой ответ. Итак, вы, вероятно, захотите что-то ответить. +1 хотя.

    @MCEmperor, пожалуйста, не редактируйте мой ответ с вашими личными настройками форматирования. Это не полезное редактирование.

    @missingfaktor Извините. Но это изменение было одобрено давно; Я даже не помню, что когда-либо делал это.

    Наиболее близким к этому типу поведения с операторами switch является

    другая альтернатива использует математическую операцию, деля ее, например:

    Но, как вы можете видеть, это можно использовать только тогда, когда диапазон фиксирован в каждом случае.

    Я не думаю, что вы можете сделать это на Java. Лучше всего просто поставить код в последнем случае диапазона.

     case 1: case 2: case 3: case 4: case 5: System.out.println("testing case 1 to 5"); break; case 6: case 7: case 8: case 9: case 10: System.out.println("testing case 6 to 10"); break; default: System.out.println("default"); 

    Я знаю, что этот пост старый, но я считаю, что этот ответ заслуживает некоторого признания. Нет необходимости избегать оператора switch. Это можно сделать в java, но через оператор switch, а не в случаях. Он включает использование тернарных операторов.

    Попробуйте, если вы должны использовать переключатель.

    public static int range(int num) < if ( 10 < num && num < 20) return 1; if ( 20 public static final int TEN_TWENTY = 1; public static final int TWENTY_THIRTY = 2; public static void main(String[]args) < int a = 110; switch (range(a))< case TEN_TWENTY: System.out.println("10-20"); break; case TWENTY_THIRTY: System.out.println("20-30"); break; default: break; >> 

    Функция range возвращает некоторое значение в соответствии с входным аргументом, поэтому здесь можно выполнить определение «диапазона значений» в сочетании с предложением switch case.

    Это работает для моего варианта использования, у меня есть 2 переменная int, и я хочу проверить, что 2 переменные находятся в том же диапазоне, как (10-20), (20-30), . как это

    Нет, вы не можете этого сделать. Лучшее, что вы можете сделать, это то, что

    case 1: case 2: case 3: case 4: case 5: System.Out.Println("testing case 1 to 5"); break; 

    Можно группировать несколько условий в одном и том же выражении case , используя механизм падения через разрешенные операторами switch, упомянутый в учебник по Java и полностью указан в разделе §14.11. Заявление о переключении Спецификация языка Java.

    Следующий фрагмент кода был взят из примера в учебнике, он вычисляет количество дней в каждом месяце (пронумеровано от месяца 1 до месяца 12):

    Как вы можете видеть, для покрытия диапазона значений в одном выражении case единственной альтернативой является перечислить каждое из возможных значений по отдельности один за другим. В качестве дополнительного примера, здесь, как реализовать псевдокод в вопросе:

    Используйте реализацию NavigableMap , например TreeMap .

    /* Setup */ NavigableMap> messages = new TreeMap<>(); messages.put(Integer.MIN_VALUE, Optional.empty()); messages.put(1, Optional.of("testing case 1 to 5")); messages.put(6, Optional.of("testing case 6 to 10")); messages.put(11, Optional.empty()); /* Use */ messages.floorEntry(3).getValue().ifPresent(System.out::println); 

    Отличное решение! не забудьте проверить на нулевое значение, используя if (messages.floorEntry(value)!=null) если вы используете целочисленное значение

    @ChVas Путь карта устанавливается здесь, floorEntry() никогда не будет возвращать null (вставляя Integer.MIN_VALUE ключ предназначен , чтобы предотвратить это). Но, независимо от вашего типа значения, вам нужно решить, как обрабатывать ключи за пределами допустимого диапазона.

    Или вы можете использовать свои сольные случаи, как предполагалось, и использовать свой случай по умолчанию, чтобы указать инструкции диапазона:

    Это то, что я всегда делаю, но также добавляю комментарий между случаями, например: // 10 - 15 см. Ниже по умолчанию

    Вы можете использовать enum для представления диапазонов,

    public static enum IntRange < ONE_TO_FIVE, SIX_TO_TEN; public boolean isInRange(int v) < switch (this) < case ONE_TO_FIVE: return (v >= 1 && v = 6 && v return false; > public static IntRange getValue(int v) < if (v >= 1 && v else if (v >= 6 && v return null; > > 

    Вот красивый и минималистский способ пойти

    (num > 1 && num < 5) ? first_case_method() : System.out.println("testing case 1 to 5") : (num >5 && num < 7) ? System.out.println("testing case 1 to 5") : (num >7 && num < 8) ? System.out.println("testing case 1 to 5") : (num >8 && num < 9) ? System.out.println("testing case 1 to 5") : . : System.out.println("default"); 

    @Tunaki - это альтернатива if..elseif использующая в каскаде троичный оператор ( condition ? statementIfTrue : statementIfFalse StatementIfTrue: if..elseif ).

    @missingfaktor действительно правильный, но немного сложный. Код более подробный (по крайней мере, для непрерывных интервалов), тогда он может быть и требует перегрузки/приведения и/или параметризации для long, float, Integer и т.д.

    Извините за поздний ответ, я не могу идти в ногу с SO ответами в последнее время. Я отвечу на вашу критику один за другим. 1. Код немного более многословен, да, и он также выполняет некоторые избыточные вычисления. Но это IMO помогает ясности в этом случае. В вашем коде нужно помнить предыдущие случаи, когда кто-то падает по лестнице.

    Что касается необходимости перегрузок и приведений, это не является действительной критикой IMO. То, что в Java нет разумного способа абстрагирования над числовыми типами, говорит об ограничениях Java больше, чем об этом подходе. Возможно, вы захотите изучить класс типов Haskell Num если хотите лучше понять этот момент.

    @missingfaktor 1. Думаю, это дело вкуса. Когда имеешь дело с непрерывными интервалами я лично хотел бы думать , if с , как будто я постепенно проливая от более низкой поддиапазон. Кроме того, избыточные вычисления не являются проблемой вообще, но избыточное сравнение немного беспокоит: становится проще делать смежные сравнения не синхронизированными, например, после некоторого редактирования: if (isBetween(x, 1, 4)) <. >else if (isBetween(x, 6, 10)) . Во всяком случае, ничего страшного.

    2. Согласен - ограничение Java, но это то, с чем мы должны работать, и ваш исходный код будет продублирован для различных типов. В этом конкретном случае проблему можно решить с помощью класса Number , хотя подход Haskell лучше (никогда не приходилось изучать Haskell, но он напоминает «Concepts Light» в C ++. Кроме того, я полагаю, вы имели в виду Real , а не Num ).

    Что касается Java 12, я считаю, что это поддерживается. Проверьте JEP 354. Я никогда не использовал синтаксис, но я думаю, что он будет работать так в вашем случае.

    switch (day) < case MONDAY, FRIDAY, SUNDAY ->System.out.println(6);//number of letters case TUESDAY -> System.out.println(7); case THURSDAY, SATURDAY -> System.out.println(8); case WEDNESDAY -> System.out.println(9); > 

    Вы должны быть в состоянии реализовать это и для целых.

    Источник

    Читайте также:  Java reflection get annotation parameters
    Оцените статью