2017-01-16 97 views
0

這裏總共有新手,請原諒愚蠢的問題。作爲一個練習,我必須編寫一個程序(使用do和while循環),計算用戶鍵入0時輸入和輸出的數字的平均值。我將第一部分計算出來:)練習的第二部分是更改如果用戶在鍵入任何其他數字之前輸入0,則顯示錯誤消息的程序。你可以向我解釋什麼是最簡單的方法來完成這一點?如果你提供的代碼很好,但我也想要一個解釋,所以我實際上理解我需要做的事情。 謝謝!這裏是代碼:當滿足某些條件時添加消息(Java)

import java.util.Scanner; 

public class totalave1 { 
    public static void main(String[] args) { 
     int number, average, total = 0, counter = 0; 
     Scanner fromKeyboard = new Scanner(System.in); 
     do { 
      System.out.println("Enter number to calculate the average, or 0 to exit"); 
      number = fromKeyboard.nextInt(); 
      total = total + number; 
      counter = counter + 1; 
      average = (total)/counter; 
     } while (number != 0); 
     System.out.println("The average of all numbers entered is: " + average); 
    } 
} 

回答

0

練習的第二部分是如果用戶在輸入任何其他數字之前鍵入0,則程序將更改爲顯示 錯誤消息。

這不是很清楚:

  • 你需要顯示錯誤消息,並且程序停止?
  • 您是否需要顯示錯誤消息並強制輸入重新開始?

在第一種情況下,只需添加一個條件執行此指令後:number=fromKeyboard.nextInt();

 do{ 
     System.out.println("Enter number to calculate the average, or 0 to exit"); 
     number=fromKeyboard.nextInt(); 
     if (number == 0 && counter == 0){ 
      System.out.println("Must not start by zero"); 
      return; 
     } 
     ... 
     } while (number!=0); 

在第二種情況下,你可以傳遞給下一次迭代採取新的輸入。 要允許進入下一次迭代,只需將數字從零更改爲與零不同的任何值,以使while條件爲真。

 do{ 
     System.out.println("Enter number to calculate the average, or 0 to exit"); 
     number=fromKeyboard.nextInt(); 
     if (number == 0 && counter == 0){ 
      System.out.println("Must not start by zero"); 
      number = 1; 
      continue; 
     } 
     ... 
     } while (number!=0); 
0

好消息是,你可能做了最難的部分。 :)但是,我不想給太多的東西,所以...

你瞭解了控制流程嗎?我假設你可能有一點點,因爲你正在使用dowhile。我建議首先在下面的Java文檔考慮看看:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html

然後,看看你目前的解決方案,並嘗試認爲你有什麼條件,這將導致你顯示錯誤消息,使用if語句。你怎麼知道用戶鍵入了0?你怎麼知道這是他們進入的第一件事?現在是否有可以幫助你的變量,還是你需要創建一個新變量?

我知道這不是代碼的答案,但是你已經在第一部分中做得很好了。讓我們知道你是否需要進一步的手。

+0

我想我沒有意識到我可以在do-while循環中使用if語句。感謝您的鏈接和建議! –

0

下面是一個簡單的程序,擴展上你的,但使用的nextDouble()代替nextInt()這樣就可以帶小數點輸入數字爲好。這也提示,如果他們已經進入無效輸入(其他的東西多了一些)用戶:

import java.util.Scanner; 

class Main { 
    public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 

    System.out.println("Java_Paws's Average of Numbers Program"); 
    System.out.println("======================================"); 
    System.out.println("Usage: Please enter numbers one per line and enter a 0 to output the average of the numbers:"); 
    double total = 0.0; 
    int count = 0; 

    while(scanner.hasNext()) { 
     if(scanner.hasNextDouble()) { 
     double inputNum = scanner.nextDouble(); 
     if(inputNum == 0) { 
      if(count == 0) { 
      System.out.println("Error: Please enter some numbers first!"); 
      } else { 
      System.out.println("\nThe average of the entered numbers is: " + (total/count)); 
      break; 
      } 
     } else { 
      total += inputNum; 
      count++; 
     } 
     } else { 
     System.out.println("ERROR: Invalid Input"); 
     System.out.print("Please enter a number: "); 
     scanner.next(); 
     } 
    } 
    } 
} 

試試吧here!

0

不下去讀碼後,如果您不能再看到的代碼。

首先你要了解flow control。其次,您必須檢查用戶輸入0後是否輸入了幾個數字,因爲您必須輸入一些if condition。如果當前編號爲0並且它在任何其他編號之前輸入,則必須將其餘代碼留在循環內並繼續下一次迭代。

import java.util.Scanner; 
public class totalave1 
{ 
    public static void main (String[]args) 
    { 
      int number, average, total=0, counter=0; 
      boolean firstTime = true; 
      Scanner fromKeyboard=new Scanner (System.in); 
      do{ 
       System.out.println("Enter number to calculate the average, or 0 to exit"); 
       number=fromKeyboard.nextInt(); 
       if(firstTime && number==0){ 
        System.out.println("error enter number first"); 
        number = -1; 
        continue; 
       } 
       firstTime = false; 
       total=total+number; 
       counter=counter+1; 
       average=(total)/counter; 
      } while (number!=0); 
    System.out.println("The average of all numbers entered is: "+average); 
    } 

} 
相關問題