Java if和else语句逻辑混乱
我是Java新手,我正在练习做一个Java应用程序,该应用程序循环询问用户有关此人出售的某些物品的一些输入。但我正试图根据我的菜单选项来确定if语句的条件。。因此,如果用户输入像-1或任何负数或超出范围的数字,这将大于4,if语句将失败,并在else语句中显示错误消息。但是我是如何错过了一些我看不见的东西,所以我希望你们中的一些人能真正看到它,让我知道我错过了什么Java if和else语句逻辑混乱,java,conditional-statements,Java,Conditional Statements,我是Java新手,我正在练习做一个Java应用程序,该应用程序循环询问用户有关此人出售的某些物品的一些输入。但我正试图根据我的菜单选项来确定if语句的条件。。因此,如果用户输入像-1或任何负数或超出范围的数字,这将大于4,if语句将失败,并在else语句中显示错误消息。但是我是如何错过了一些我看不见的东西,所以我希望你们中的一些人能真正看到它,让我知道我错过了什么 public static void main(String[] args) { // TODO code appl
public static void main(String[] args) {
// TODO code application logic here
Scanner input = new Scanner(System.in);
SalesCal a = new SalesCal();
int select = 1; // menu selection
int solds; // sales person input
a.displayMessage();
while(select != 0){
System.out.print("Plese enter \t1 for item1($239.99),\n\t\t2 for item2($129.75),\n\t\t3 for item3($99.95),\n\t\t4 for item4($350.89),\n\t\t0 to cancel: ");
select = input.nextInt(); //getting user input
System.out.print("\n");
if((select <= 4) && (select <= 0) && (select < 0)){
System.out.printf("You selected: item%d\n", select);
System.out.printf("Plese enter the quantity sold for item%d: ", select);
solds = input.nextInt(); //getting user input
System.out.print("\n");
a.GrossCal(select, solds);
} else {
System.err.print("Wrong selectiong, please try again...\n\n");
}
}
a.displayResults();
}
}
非常感谢您的帮助…ifselect=0,此语句应负责-ve输入ifselect=0,此语句应负责-ve输入看起来您的最末端有一个额外的把手 确定if和else所属的一种方法是查找最内部的if。与此最接近的else是与if相关的else。你可以从那里向外工作 :D 或者,如果条件为真,则可以使用switch语句并输入自己的逻辑:
switch(select) {
case 0: System.out.println("select = 0");
break;
case 1: System.out.println("select = 1");
break;
case 2: System.out.println("select = 2");
break;
case 3: System.out.println("select = 3");
break;
case 4: System.out.println("select = 4");
break;
default: System.out.println("Please enter a number from zero to four");
}
希望这能有所帮助。看起来你的最末端多了一个把手 确定if和else所属的一种方法是查找最内部的if。与此最接近的else是与if相关的else。你可以从那里向外工作 :D 或者,如果条件为真,则可以使用switch语句并输入自己的逻辑:
switch(select) {
case 0: System.out.println("select = 0");
break;
case 1: System.out.println("select = 1");
break;
case 2: System.out.println("select = 2");
break;
case 3: System.out.println("select = 3");
break;
case 4: System.out.println("select = 4");
break;
default: System.out.println("Please enter a number from zero to four");
}
希望这有帮助。我认为您需要的if语句逻辑是:
if (select > 0 && select <= 4){
System.out.printf("You selected: item%d\n", select);
System.out.printf("Plese enter the quantity sold for item%d: ", select);
solds = input.nextInt(); //getting user input
System.out.print("\n");
a.GrossCal(select, solds);
} else if (select != 0) {
System.err.print("Wrong selectiong, please try again...\n\n");
}
当用户输入0时,这将跳过处理逻辑和错误消息。我认为您需要的if语句逻辑是:
if (select > 0 && select <= 4){
System.out.printf("You selected: item%d\n", select);
System.out.printf("Plese enter the quantity sold for item%d: ", select);
solds = input.nextInt(); //getting user input
System.out.print("\n");
a.GrossCal(select, solds);
} else if (select != 0) {
System.err.print("Wrong selectiong, please try again...\n\n");
}
if((select <= 4) && (select <= 0) && (select < 0))
A B C
当用户输入0时,这将跳过处理逻辑和错误消息
if((select <= 4) && (select <= 0) && (select < 0))
A B C
如果零和四本身也不好,那么使用
if(select <= 0 || select => 4)
或
如果零和四本身也不好,那么使用
if(select <= 0 || select => 4)
或
哪个数字同时小于4和0?没想过,我会试试。。这是我第一次使用netbeans和java编码。。但deff下次会检查它,告诉我们您期望的答案和您使用的输入。@zapl取消时它应该在1-4和0之间。。负数或超出范围的数字(如-5或6)将执行错误message@Infinity我想,我试图解释我在帖子里想做什么,如果不清楚的话,那是我的错。英语不是我的第一语言,但我尽了最大努力。哪个数字同时小于4和0?没想过,我会试试的。。这是我第一次使用netbeans和java编码。。但deff下次会检查它,告诉我们您期望的答案和您使用的输入。@zapl取消时它应该在1-4和0之间。。负数或超出范围的数字(如-5或6)将执行错误message@Infinity我想,我试图解释我在帖子里想做什么,如果不清楚的话,那是我的错。英语不是我的第一语言,但我尽了最大的努力。它似乎用你的方式工作得更好,但只保留else语句本身,但当我按0时,仍然显示来自else语句的错误消息,我没有得到实际的效果,但我觉得netbeans在打印消息时有点迟钝。。谢谢tho.@NorthBlast-我很高兴它对你有用。我的代码的想法是在用户输入0时跳过数量请求。这就是为什么第一个if使用select>0而不是select>=0。但是,由于0是一个有效的输入,意味着退出,因此我还需要else if部分,因此错误消息不会显示。按照您的方式,它似乎工作得更好,但会自动保留else语句,但是当我按0时,仍然会显示来自else语句的错误消息,虽然我没有得到实际的效果,但我觉得netbeans在打印消息时有点迟钝。。谢谢tho.@NorthBlast-我很高兴它对你有用。我的代码的想法是在用户输入0时跳过数量请求。这就是为什么第一个if使用select>0而不是select>=0。但是,由于0是一个有效的输入,意味着退出,因此我还需要else if部分,因此不会显示错误消息。欢迎您:D…嵌套的if/else语句令人困惑。如果使用括号,这可以改变代码的含义,使用else语句,而不是接近If。如果语句未括在括号内,则最接近的内部else与最接近的内部If可作为计算代码逻辑的一种方法:D这需要一些练习,你会得到的。不客气D…嵌套的if/else语句令人困惑。如果使用括号,这可以改变代码的含义,使用else语句,而不是接近If。如果语句未括在括号内,则最接近的内部else与最接近的内部If可作为计算代码逻辑的一种方法:这只需要一些练习,你就会得到它。