Java While循环不会继续要求用户输入

Java While循环不会继续要求用户输入,java,Java,我对java非常陌生,需要帮助。基本上,我有一个程序,要求用户输入一个数字。当输入该数字时,它会将该数字之前的所有奇数相加。我正在尝试(但失败)做的是,做另一个循环,当提示用户请求一个数字来求奇数之和时,我想让它只在输入奇数时继续,否则它将不断重复询问用户,直到他们输入奇数为止。我知道使用while循环可以解决这个问题,但我不知道如何让它工作 这是我的密码: import java.util.Scanner; 公共类计算器{ 专用静态扫描仪sc; 公共静态void main(字符串[]args)

我对java非常陌生,需要帮助。基本上,我有一个程序,要求用户输入一个数字。当输入该数字时,它会将该数字之前的所有奇数相加。我正在尝试(但失败)做的是,做另一个循环,当提示用户请求一个数字来求奇数之和时,我想让它只在输入奇数时继续,否则它将不断重复询问用户,直到他们输入奇数为止。我知道使用
while
循环可以解决这个问题,但我不知道如何让它工作

这是我的密码:

import java.util.Scanner;
公共类计算器{
专用静态扫描仪sc;
公共静态void main(字符串[]args)
{
整数,i,oddSum=0;
sc=新扫描仪(系统英寸);
系统输出打印(“请输入任何数字:”);
编号=sc.nextInt();
while(数字%2!=0)//这里是我遇到问题的地方
{
继续;
}

for(i=1;i
continue;
作为一条语句,向上向外扫描第一个可以继续的构造。可以继续的内容当前只有
for
while
do/while
语句,因此它会找到
while(number%2!=0)
,并将继续它

继续while循环意味着:直接跳回条件
number%2!=0
,对其求值,如果为真,则再次进入循环;如果为假,则跳转到
}

因此,您的代码检查数字是否为奇数。如果是,它将..继续。因此,它将..检查数字是否为奇数。如果是,它将检查数字是否为奇数。如果是,它将检查数字是否为奇数…永远


大概您的意图是再次询问用户,但随后您必须围绕更多代码进行循环:从打印开始,因为肯定是
sc.nextInt()
需要在循环中。这意味着您将没有要检查的
数字
值,但这就是do/while循环的作用:保证您至少循环一次(并且可以使用循环中计算的任何内容作为条件的一部分)

继续while循环意味着:直接跳回条件
number%2!=0
,对其求值,如果为真,则再次进入循环;如果为假,则跳转到
}

因此,您的代码检查数字是否为奇数。如果是,它将..继续。因此,它将..检查数字是否为奇数。如果是,它将检查数字是否为奇数。如果是,它将检查数字是否为奇数…永远


大概您的意图是再次询问用户,但随后您必须围绕更多代码进行循环:从打印开始,因为肯定是
sc.nextInt()
需要在循环中。这意味着您将没有要检查的
数字
值,但这就是do/while循环的作用:保证您至少循环一次(并且可以使用循环中计算的任何内容作为条件的一部分).

如果数字不是奇数,则还应在
循环中使用扫描仪

while (number % 2 !=0) {
    number = sc.nextInt(); // Use here as well to keep asking for a number until is odd
}
    

如果数字不是奇数,还应在
while
循环中使用扫描仪

while (number % 2 !=0) {
    number = sc.nextInt(); // Use here as well to keep asking for a number until is odd
}
    

你的困惑似乎是因为误解了
continue
意味着回到
循环,而
break
是让你脱离循环的原因。这对你有用吗

System.out.println(" Please Enter any Number : ");
number = sc.nextInt();

// keep asking for a number for as long as it is even (condition is false on odd)
while (number % 2 == 0) {
   System.out.println("Please enter another number: ");
   number = sc.nextInt();
}

System.out.println(number + " is now odd!");

你的困惑似乎是因为误解了
continue
意味着回到
循环,而
break
是让你脱离循环的原因。这对你有用吗

System.out.println(" Please Enter any Number : ");
number = sc.nextInt();

// keep asking for a number for as long as it is even (condition is false on odd)
while (number % 2 == 0) {
   System.out.println("Please enter another number: ");
   number = sc.nextInt();
}

System.out.println(number + " is now odd!");

我希望这个输出就是您想要的,您以前的代码不起作用的原因是
number=sc.nextInt()

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
     // int number, i, oddSum = 0;
    int number, i, oddSum = 0;
    Scanner sc = new Scanner(System.in);
    System.out.print("Please Enter any Number : ");
    do{
      number = sc.nextInt();
      if(number % 2 == 0){
        System.out.print("Please Enter an odd number!: ");
      }
    }while(number % 2 == 0);
    for(i = 1; i <= number; i++)
      {
          if(i % 2 != 0)
          {
              oddSum = oddSum + i; 
          }
      }
    System.out.println("\nThe Sum of Odd Numbers up to "  + number +   " = "  + oddSum);
  }
}

我希望这个输出就是您想要的,您以前的代码不起作用的原因是
number=sc.nextInt()

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
     // int number, i, oddSum = 0;
    int number, i, oddSum = 0;
    Scanner sc = new Scanner(System.in);
    System.out.print("Please Enter any Number : ");
    do{
      number = sc.nextInt();
      if(number % 2 == 0){
        System.out.print("Please Enter an odd number!: ");
      }
    }while(number % 2 == 0);
    for(i = 1; i <= number; i++)
      {
          if(i % 2 != 0)
          {
              oddSum = oddSum + i; 
          }
      }
    System.out.println("\nThe Sum of Odd Numbers up to "  + number +   " = "  + oddSum);
  }
}

询问用户直到他们输入奇数,您可能必须使用
number=sc.nextInt()重新读取用户在循环中的输入;
而不是使用
continue
。我尝试了这个方法,但是当我输入一个无效的数字时,代码就结束了,而不是再次询问问题。思考方法:如果用户没有输入一个正整数,会发生什么?例如-7或3.14询问用户直到他们输入一个奇数,您可能必须重新阅读e用户使用
number=sc.nextInt()在循环中输入;
而不是使用
continue
。我尝试了这个方法,但是当我输入一个无效的数字时,代码就结束了,而不是再次问问题。想想看:如果用户没有输入一个正整数会怎么样?例如-7或3.14谢谢!我现在意识到,while循环应用于奇数,而我没有输入奇数将其改为适用于偶数,因此,如果该数字为偶数,它将要求用户再次输入。我的问题是,如何获得仅在while循环中检查输入的数字是否为偶数的值?谢谢!