Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java if和else语句逻辑混乱_Java_Conditional Statements - Fatal编程技术网

Java 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

我是Java新手,我正在练习做一个Java应用程序,该应用程序循环询问用户有关此人出售的某些物品的一些输入。但我正试图根据我的菜单选项来确定if语句的条件。。因此,如果用户输入像-1或任何负数或超出范围的数字,这将大于4,if语句将失败,并在else语句中显示错误消息。但是我是如何错过了一些我看不见的东西,所以我希望你们中的一些人能真正看到它,让我知道我错过了什么

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可作为计算代码逻辑的一种方法:这只需要一些练习,你就会得到它。