Путаница при вложении операторов if со сканером

#java #java.util.scanner

Вопрос:

Так что в этой программе мне в основном не хватает пары вещей:

  • Убедитесь, что заработная плата составляет не менее 0
  • Убедитесь, что количество часов не меньше 40, а также больше 0.

Моя проблема в том, что я не знаю, как к этому подойти. Первоначально я думал, что смогу добавить оператор If в первый оператор If каждого из них, но значение, сохраняемое в сканировании, недоступно до тех пор, пока оно не будет отсканировано, то есть после первого оператора If. Как бы я сделал такое заявление, чтобы проверить это?

Вот код:

 import java.util.Scanner;  public class PayrollCC{ public static void main (String [] args){  Scanner scan = new Scanner(System.in);   double wage=0; int hours=0; boolean bool = false; final int MAXHOURS = 40;  do{  System.out.println("Please enter your hourly wage: ");    if(scan.hasNextDouble() amp;amp; !scan.hasNextInt()){  wage = scan.nextDouble();  scan.nextLine();  bool = true;  }  else{  bool = false;  scan.nextLine();  }     } while(!bool);     do{  System.out.println("Please enter how many hours you have worked this week: ");    if(scan.hasNextInt()){  hours = scan.nextInt();  scan.nextLine();  if(hours gt; MAXHOURS amp;amp; hours lt; 0){  bool = false;  }    bool = true;  }  else{  bool = false;  scan.nextLine();  }     } while(!bool);  double week = (hours*wage); double total = (week); double avg = (week);   System.out.println("Week's pay: $" (week) " Total pay: $" (total) " Average pay per week: $" (avg));    } }  

Ответ №1:

Вот как бы я это реализовал. Я не знаю, полностью ли это полезно для вас, но если нет, я буду рад ответить на любые вопросы об этом.

 import java.util.Scanner;  public class PayrollCC{  public static void main (String [] args){   Scanner scan = new Scanner(System.in);   double wage = 0;  int hours = 0;  final int MAX_HOURS = 40;   //Get user's wage  do {  System.out.println("Please enter your wage: ");  wage = scan.nextDouble();  } while (wage lt; 0);   //Get user's hours worked  do {  System.out.println("Please enter how many hours you have worked this week: ");  hours = scan.nextInt();  } while ((hours gt; 40) || (hours lt; 0));    double week = (hours*wage);  double total = (week);  double avg = (week);    System.out.println("Week's pay: $" (week) " Total pay: $" (total) " Average pay per week: $" (avg));   } }  

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

1. Если мой ответ был полезен, я был бы признателен, если бы вы могли выбрать эту тему как решенную, или если нет, я был бы рад ответить на любые новые вопросы