2016-07-27 56 views
1

當前正在閱讀我的書中的第6章。我們在何處引入循環和while循環。與掃描儀混淆(Big Java Ex 6.3)

好吧基本上這樣的程序示例讓我讓用戶輸入任意數量的數字,直到用戶鍵入Q.一旦用戶鍵入Q,我需要獲取最大數量和平均值。

我不會把實際進行計算的方法放進去,因爲我非常好地命名它們,但主要是我的困惑所在。

通過下面有方式的簡單的輸入輸出

輸入

10 
0 
-1 
Q 

輸出

Average = 3.0 
Max = 10.0 

我的代碼

public class DataSet{ 
    public static void main(String [] args) 
    { 
     DataAnalyze data = new DataAnalyze(); 
     Scanner input = new Scanner(System.in); 
     Scanner inputTwo = new Scanner(System.in); 
     boolean done = false; 
     while(!done) 
     { 

      String result = input.next(); 
      if (result.equalsIgnoreCase("Q")) 
      { 
       done = true; 
      } 
      else { 
       double x = inputTwo.nextDouble(); 
       data.add(x); 
      } 
     } 
     System.out.println("Average = " + data.getAverage()); 
     System.out.println("Max num = " + data.getMaximum()); 
    } 

} 

我在double x = inputTwo.nextDouble();處收到錯誤消息。

繼承人我的思考過程。

讓我們製作一個標記並繼續循環詢問用戶的號碼,直到我們點擊Q。現在我的問題是,當然這個數字需要是一個雙精度,而Q將是一個字符串。所以我的嘗試是製作兩臺掃描儀

繼承人我的書是如何基於第二章對掃描儀的理解的。

好吧所以import Scanner from java.util library所以我們可以使用這個包。之後,我們必須創建scanner對象。說Scanner input = new Scanner(System.in);。現在唯一要做的事情實際上是要求用戶輸入,所以我們通過將其設置爲另一個變量(即此處的input)來完成此操作。這很好的原因是,它允許我們將我們的掃描儀設置爲doublesints等,當它作爲默認string(通過.nextDouble(), .nextInt());

所以,因爲我設置導致的string,我是,我不能使用相同的Scanner對象來獲取double的印象,所以我做了一個名爲inputTwo另一個Scanner對象,因此,如果用戶不把Q(即放數字)它會得到這些值。

我該如何解決這個問題?我覺得我沒有想到一些非常簡單和容易的事情。

回答

1

您在這裏是正確的道路,但是您不需要兩個掃描儀來處理輸入。如果結果是數字,則使用double x = Double.parseDouble(result)將其轉換爲雙精度值,並一起移除第二個掃描儀。祝你好運!

+0

將其轉換爲雙正確的?,爲什麼不只是做雙x =(雙)結果。我記得把(double),(int)放在前面來轉換東西。 –

+0

@cresjoy你所描述的是鑄造,並在數字類型之間工作,但需要parseDouble函數來轉換字符串。 –

+0

啊我看到謝謝!看起來像有很多的語法學習:( –