Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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语句不将int变量向上迭代1? 我想做什么_Java_If Statement_Java.util.scanner - Fatal编程技术网

Java 为什么嵌套的if语句不将int变量向上迭代1? 我想做什么

Java 为什么嵌套的if语句不将int变量向上迭代1? 我想做什么,java,if-statement,java.util.scanner,Java,If Statement,Java.util.scanner,当输入超出范围时,我希望if语句布尔向上迭代变量 问题 我输入的要由if语句检查的数字似乎不起作用。如果输入的3个数字小于-6.0或大于12.3,则记录故障,但我使用的int变量似乎从未改变 我试过的 我尝试过切换迭代顺序,只使用+1,但“failures”变量始终保持在0 import java.util.Scanner; 公开课考试{ 公共静态void main(字符串[]args){ 字符串输入=“a”; 双aNum1; 双aNum2; 双aNum3; int-aFailures=0; 扫

当输入超出范围时,我希望if语句布尔向上迭代变量

问题 我输入的要由if语句检查的数字似乎不起作用。如果输入的3个数字小于-6.0或大于12.3,则记录故障,但我使用的
int
变量似乎从未改变

我试过的 我尝试过切换迭代顺序,只使用+1,但“failures”变量始终保持在0

import java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
字符串输入=“a”;
双aNum1;
双aNum2;
双aNum3;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
//特里克斯
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){
System.out.println(“输入数字1:”);
aNum1=序列号nextDouble();
System.out.println(“输入数字2:”);
aNum2=序列号nextDouble();
System.out.println(“输入数字3:”);
aNum3=序列号nextDouble();
如果(aNum1=12.3){
++失败;
}
如果(aNum2=12.3){
++失败;
}
如果(aNum3=12.3){
++失败;
}
}
if(输入等于(“f”)){
System.out.println(“Azuview故障:+A故障”);
打破
}
}
}
}
当我输入布尔条件以外的数字时,我希望系统输出“Azuview failures 2”,但程序似乎没有识别出输入超出范围。“aFailures”从0开始,但从不从if语句更改…

当您确实应该使用
|
(OR)时,
&&
(AND)运算符正在
if
语句中使用
aNum1=12.3
永远不会计算为真,因为一个数字显然不能同时小于或等于-6.0和大于或等于12.3

至于程序的其余部分,我决定使用
for
循环,而不是使用三个单独的int来检查相同的条件三次

public static void main(String[] args) {
    String input = "a";
    int aFailures = 0;

    Scanner scnr = new Scanner(System.in);

    while (true) {
        System.out.println("Please enter a command:");
        input = scnr.next();

        if (input.equals("a")) {
            for (int i = 1; i <= 3; i++) {
                System.out.println("Enter number " + i + ": ");
                double num = scnr.nextDouble();
                if (num <= -6.0 || num >= 12.3)
                    aFailures++;
            }
        } else if (input.equals("f")) {
            System.out.println("Azuview failures: " + aFailures);
            break;
        }
    }
    scnr.close();
}
publicstaticvoidmain(字符串[]args){
字符串输入=“a”;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){
对于(int i=1;i当您确实应该使用
|
(OR)时,
&&
(AND)运算符正在您的
if
语句中使用。
aNum1=12.3
将永远不会计算为true,因为数字显然不能同时小于或等于-6.0和大于或等于12.3

至于程序的其余部分,我决定使用
for
循环,而不是使用三个单独的int来检查相同的条件三次

public static void main(String[] args) {
    String input = "a";
    int aFailures = 0;

    Scanner scnr = new Scanner(System.in);

    while (true) {
        System.out.println("Please enter a command:");
        input = scnr.next();

        if (input.equals("a")) {
            for (int i = 1; i <= 3; i++) {
                System.out.println("Enter number " + i + ": ");
                double num = scnr.nextDouble();
                if (num <= -6.0 || num >= 12.3)
                    aFailures++;
            }
        } else if (input.equals("f")) {
            System.out.println("Azuview failures: " + aFailures);
            break;
        }
    }
    scnr.close();
}
publicstaticvoidmain(字符串[]args){
字符串输入=“a”;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){

对于(int i=1;i而言,问题在于使用
&&
(逻辑与)而不是
|
(逻辑或)

我对您的代码进行了一点压缩,现在我们要求3次获取一个数字,如果数字在范围内,我们什么也不做,否则,我们迭代
a失败

import java.util.Scanner;
公共班机{
专用静态布尔校验范围(双输入){
返回输入=12.3;
}
公共静态void main(字符串[]args){
字符串输入;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){

对于(int i=1;i而言,问题在于使用
&&
(逻辑与)而不是
|
(逻辑或)

我对您的代码进行了一点压缩,现在我们要求3次获取一个数字,如果数字在范围内,我们什么也不做,否则,我们迭代
a失败

import java.util.Scanner;
公共班机{
专用静态布尔校验范围(双输入){
返回输入=12.3;
}
公共静态void main(字符串[]args){
字符串输入;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){

对于(inti=1;我试着想一个数字,它会使
aNum1=12.3
成为真的。我想你的意思是使用
|
。你的if条件不是说如果aNum小于-6.0且大于12.3……这怎么可能是真的?应该是相反的吗?@MarsAtomic我真的不明白这是怎么回事nt.是的,这是我在另一个选项卡上打开的一个问题。我撤回了投票,但评论保留了下来。试着想想一个数字,它会使
aNum1=12.3
成为真的。我想你的意思是使用
|
。你的if条件不是说如果aNum小于-6.0且大于12.3…这怎么可能是真的“他们应该反过来吗?”MarsAtomic我真的不明白这有什么关系。是的,这是我在另一个标签上打开的一个问题。我撤回了投票,但评论保留了下来。