Как я могу продолжить if с того места, где я в последний раз выбирал

#java #if-statement #netbeans

#java #if-statement #netbeans

Вопрос:

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

      if (age >= 57 amp;amp; age <= 75) {
                System.out.println("Oh so you're a baby boomer)");
                String boomer = in.nextLine();

but when I try to continue the questions it cuts off.




 System.out.println("Hello my name is ADA what's your name? ");
        String Name = in.nextLine();
        System.out.println("What a delightful name, How old are you dear?");
        int age = in.nextInt();
   if (age<=18){
              System.out.println("Oh your younger than I excpected come back when you are older dear)  ");   
              
        if (age >= 57 amp;amp; age <= 75) {
            System.out.println("Oh so your a baby boomer)");
            String baby = in.nextLine();
            
            if (age>=42 amp;amp; age <=56){
                System.out.println("oh so your from Generation x");
            String x = in.nextLine();
            
            if (age>=21 amp;amp; age <=41){
            System.out.println("Oh so your from Generation Y");
            String Y= in.nextLine();
           
    
            


           
 

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

Комментарии:

1. Вы не используете правильный if синтаксис оператора.

2. Было бы правильнее вычислять по дате рождения человека. Использование их возраста означает, что ваша программа будет ошибочной через несколько лет.

3. пожалуйста, правильно отформатируйте код, это поможет вам обнаружить, что вы вкладываете ifs вместо оценки каждого из них

Ответ №1:

вы можете написать это так, чтобы оно действительно компилировалось

         System.out.println("Hello my name is ADA what's your name? ");
        String Name = in.nextLine();
        System.out.println("What a delightful name, How old are you dear?");
        int age = in.nextInt();
        if (age <= 18) {
            System.out.println("Oh your younger than I excpected come back when you are older dear)  ");
        } else if (age >= 57 amp;amp; age <= 75) {
            System.out.println("Oh so your a baby boomer)");
            String baby = in.nextLine();

        } else if (age >= 42 amp;amp; age <= 56) {
            System.out.println("oh so your from Generation x");
            String x = in.nextLine();

        } else if (age >= 21 amp;amp; age <= 41) {
            System.out.println("Oh so your from Generation Y");
            String Y = in.nextLine();
        }
 

Ответ №2:

не могли бы вы опубликовать свой полный код, чтобы взглянуть? Кажется, что условия не вложены должным образом, поэтому поток управления не совпадает с тем, что вы ожидаете. например, если возраст == 54, первое условие будет ложным:

if (age >= 57 amp;amp; age <= 75) {

и я не вижу никаких других условий для обработки этих случаев.

Попробуйте что-то вроде этого:

 if (age >= 57 amp;amp; age <= 75) {
  ... action for this age range
} else if(age < 57) {
  ... action for when age is lesser than 57
} else {
  ... action for when age is greater than 75
}
 

Ответ №3:

Не уверен, в чем ваша проблема, ваш код немного запутан. Я перестроил его, и все работает нормально:

 import java.util.Scanner;

public class Main {
  public static void main(String args[]) {

    Scanner in = new Scanner(System.in);
    System.out.println("Hello my name is ADA what's your name? ");
    String name = in.nextLine();
    System.out.println("What a delightful name, How old are you dear?");
    int age = in.nextInt();
    if (age<=18){
        System.out.println("Oh your younger than I expected come back when you are older dear");
    }
    if (age>=21 amp;amp; age <=41){
      System.out.println("Oh so your from Generation Y");
      boolean bn = in.nextBoolean();          
      if (bn == false) {
        System.out.println("Fine suit yourself ");
      } 
      else if (bn == true) {
        System.out.println("Did you workout today?");
        String yourself = in.nextLine();
      }
    }
    if (age>=42 amp;amp; age <=56){
        System.out.println("oh so your from Generation x");
        String x = in.nextLine();
    }
    if (age >= 57 amp;amp; age <= 75) {
        System.out.println("Oh so your a baby boomer");
        String baby = in.nextLine();
    }
  }
}
 

В конце каждого случая if вы просите пользователя ввести данные in.nextLine() , которые не используются, поэтому вам следует рассмотреть возможность их удаления или использования данных.