簡體   English   中英

While 循環不會繼續要求用戶輸入

[英]While loop will not continue to ask the user for an input

我對java很陌生,我需要幫助。 基本上,我有一個程序要求用戶輸入一個數字。 當輸入數字時,它會對該數字之前的所有奇數求和並將它們相加。 我正在嘗試(並且失敗)做的是,進行另一個循環,當用戶被提示要求輸入一個數字來總結奇數時,我想讓它只在奇數時繼續輸入,否則它會不斷重復詢問用戶,直到他們輸入一個奇數。 我知道使用while循環可以解決這個問題,但我不確定如何讓它工作。

這是我的代碼:

import java.util.Scanner;

public class OddCalculator {
    private static Scanner sc;
    public static void main(String[] args) 
    {
        int number, i, oddSum = 0;
        sc = new Scanner(System.in);
        System.out.print(" Please Enter any Number : ");
        number = sc.nextInt();  
        while (number % 2 !=0) //HERE IS WHERE IM HAVING THE ISSUE
        {
            continue;
        }
        for(i = 1; i <= number; i++)
        {
            if(i % 2 != 0)
            {
                oddSum = oddSum + i; 
            }
        }
        System.out.println("\n The Sum of Odd Numbers upto " + number + "  =  " + oddSum);
    }
}

提前致謝!

continue; 作為語句“向上和向外”掃描可以繼續的第一個構造。 可以繼續的事情目前僅for , whiledo/while語句,因此它會找到while (number % 2 != 0)並將繼續它。

繼續 while 循環意味着:直接跳回到條件number %2 != 0 ,對其進行評估,如果為真,則再次進入循環,如果為假,則跳到}

因此,您的代碼會檢查數字是否為奇數。 如果是,它將.. 繼續。 所以,它會......檢查數字是否為奇數。 如果是,它將檢查數字是否為奇數。 如果是,它將檢查數字是否為奇數......永遠。

想必你的意圖是再次詢問用戶,但你不得不環繞更多的代碼循環:開始與print ,因為肯定sc.nextInt()必須在循環 那並不代表你會不會有一個number值來檢查,但是這就是做/ while循環是:為了保證您的循環至少一次(所以你可以使用循環計算什么作為條件的一部分)。

您還應該在while循環內使用掃描儀,以防數字不是奇數。

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

您的困惑似乎來自誤解,即continue意味着回到while循環,而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(); 這就是為什么你可以提示用戶輸入的原因,所以你必須循環它,此外,你可以根據用戶在if語句中輸入的內容給出特定的提示,希望這有幫助!

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);
  }
}

輸出:

Please Enter any Number : 2
Please Enter an odd number!: 2
Please Enter an odd number!: 3

The Sum of Odd Numbers up to 3 = 4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM