Java 如何在不同的循环中使用输入

Java 如何在不同的循环中使用输入,java,Java,我有以下错误 找不到符号:变量num 在所有的if语句中 这是我当前的代码 Scanner console = new Scanner(System.in); int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; do{System.out.println("Type a number (or -1 to stop): "); int num = console.nextInt(); }whi

我有以下错误

找不到符号:变量num

在所有的if语句中

这是我当前的代码

Scanner console = new Scanner(System.in);
 int min = Integer.MAX_VALUE;
    int max = Integer.MIN_VALUE;

do{System.out.println("Type a number (or -1 to stop): ");
   int num = console.nextInt();
  }while(!num == -1);{
   System.out.print(+ num );
   }if (min < num) {
       num = min;
   }if (num > max) {
         max = num;
      } 
     
    System.out.println("maximum was : " + max);
   System.out.println("minimum was : " + min);
}
帮助。

语法问题

不会工作,因为Java不允许使用否定运算符!位于非类型布尔值的开头。不能在执行while循环中的while循环中执行局部实体

这里的解决办法 只需将此行更改为以下内容,即可修复代码:

while (num != -1); {...} 
因此,您必须拆下整个while主体,并将其替换为

while (num != -1);
因此,卸下支架 我强烈建议您学习Java语法。
因此,Vinzent

问题在于变量num的范围。您已经在do块内声明了它,因此在do块外无法访问num。此外,您的if条件不正确

实现这一点,代码应该可以正常运行:

Scanner console = new Scanner(System.in);
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int num = 0;

do{
System.out.println("Type a number (or -1 to stop): ");
num = console.nextInt();
} while(num != -1);

if (min < num) {
num = min;
} if (num > max) {
max = num;
}

System.out.println("maximum was : " + max);
System.out.println("minimum was : " + min);
您希望在循环内测试max和min,而不是在循环终止后测试,因为这意味着您只测试输入的最后一个数字-它将始终是-1减1。您还编写了要忽略-1的代码。我相信下面的代码可以满足您的要求,即查找用户输入的一系列数字的最小值和最大值

Scanner console = new Scanner(System.in);
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int num = 0;
do {
    System.out.print("Type a number (or -1 to stop): ");
    num = console.nextInt();
    console.nextLine();
    if (num != -1) {
        if (num > max) {
            max = num;
        }
        if (num < min) {
            min = num;
        }
    }
} while (num != -1);
if (max == Integer.MIN_VALUE) {
    System.out.println("No numbers were entered.");
}
else {
    System.out.printf("max = %d , min = %d%n", max, min);
}
请注意,您需要使用用户在输入每个数字后按下的键。因此调用类Scanner的方法nextLine。指


如果输入的第一个数字是-1,则用户没有输入任何数字,因此没有最大值或最小值。如果输入的第一个数字是-1,那么max的值将是整数。MIN_值。

初始化num out do并将whilenum条件更改为whilenum!=1在解决代码中的一个错误问题时,您未能解决文章中提到的主要问题,因此无法产生所需的结果output@MohitDodhia当然了。问题是,为什么找不到num,因为语法错误。如果他能描述一下他面临的主要问题,我可以对此作出回应。如何在不同的循环中使用输入我不知道这意味着什么。但我知道,正如他所描述的,他的语法是主要问题!找不到num的原因是它的作用域仅限于do块。如果在while条件中num可用,编译器将抛出语法错误。我这样说并不是说你对语法错误的评估是错误的;我只是说,这段代码的主要问题是变量num的作用域,后面是您在回答中已经纠正的语法错误。谢谢!错误已消失,但-1始终是最大值,最小值始终是2147483647,因此我们尚未完全达到该值。@MentalOverload由于没有可用的信息,因此我的答案仅限于解决错误,因此您能否提供更多信息,说明您希望通过该选项实现的目标。这将帮助我更好地理解如何处理这个问题。
Scanner console = new Scanner(System.in);
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int num = 0;
do {
    System.out.print("Type a number (or -1 to stop): ");
    num = console.nextInt();
    console.nextLine();
    if (num != -1) {
        if (num > max) {
            max = num;
        }
        if (num < min) {
            min = num;
        }
    }
} while (num != -1);
if (max == Integer.MIN_VALUE) {
    System.out.println("No numbers were entered.");
}
else {
    System.out.printf("max = %d , min = %d%n", max, min);
}