2011-09-18 84 views
0

我需要能夠從輸入方法的方法中獲得number和numberCount的值。從一種方法生成2個值

我做的分配是這樣的......

設計和實現一個Java程序,它會聚集浮點數,並確定輸入的數據的總和與平均值。程序應該使用不同的方法輸入數據,計算總和,計算平均值並顯示結果。應使用哨兵值來表示用戶已完成輸入他們的號碼。輸出應顯示一條消息,其中包括輸入的數字的計數,數字的總和以及數字的平均值。如果數字總和大於100,則應顯示一條警告消息,指出「數值超過了總數100」。

  1. 其他要求包括:

一個。使用JOptionPane.showInputDialog()方法爲您的用戶輸入其數據

b。使用JOptionPane.showMessageDialog()方法來顯示你的消息。

這是我迄今爲止...

// Import javax JOptionPane 
import javax.swing.JOptionPane; 

// Create Class 
public class Test { 

    // Main Method 
    public static void main(String[] args) { 

    // Initialize values 
    int numberCounter = 0; 
    int count; 

    double sum = 0; 
    double number = 0; 
    double average; 

    double numberString=0; 
    number = readDouble(numberString, number, sum, numberCounter); 
    numberCounter = read1Double(numberString, number, sum, numberCounter); 

    // Initiate loop if user entered at least one value display average, count, sum 
    if (numberCounter != 0) { 

    // Promote numberCounter to double and calculate average of all numbers entered 
    average = avg(sum, numberCounter); 

    // Calculate count 
    count = numberCounter; 

    // Display average, count and sum. 
    JOptionPane.showMessageDialog(null, "Sum of numbers input : " + sum + "\nCount of 
    numbers : " + count + "\nAverage of numbers : " + average); 
    } 
    // Initiate loop if sum exceeds 100 display message 
    if (sum >= 100) { 
    JOptionPane.showMessageDialog(null, "The sum of inputed numbers exceeds 100!"); 
    } 
    } 

    // Average Method 
    private static double avg(double s, double c) { 
    return (s/c); 
    } 

    // Sum Method 
    private static double sum(double s, double c) { 
    return (s+c); 
    } 

    // Input Method 
    private static double readDouble(double i, double number, double sum, int numberCounter) { 

    // Acquire first number from user 
    String numberString; 
    numberString = JOptionPane.showInputDialog(
    "Enter integer number :"); 
    number = Double.parseDouble(numberString); 

     // Initiate loop until stopped by user by using sentinel value of -1 
     while (number != -1) { 
     sum = sum(sum, number); 
     numberCounter = numberCounter + 1; 

     // Acquire the remaining numbers from user until stopped 
     numberString = JOptionPane.showInputDialog(
     "Enter integer number or -1 if no more numbers to insert :"); 
     number = Double.parseDouble(numberString); 
     } 
    return number; 
    } 
    } 
} 

由於一噸的答覆,但我能得到這樣的怎麼會在我的腳本中使用的例子嗎?我很困惑,幾乎沒有睡覺,最後一天的一切都是這個任務。哈哈Java肯定會讓你失望。

是的,它不起作用,但我需要在我的主要方法輸入法的值,所以輸出數據是正確的。

我的課還沒有做數組呢,所以我的老師期待比Array更少的東西。

+0

有什麼問題呢?希望你會說別的不是「不行」。 – Kashyap

+0

@ user951376:我們不會做你的功課。你應該解耦的東西。首先收集用戶輸入,然後執行計算,然後顯示包含警告的結果。 – home

+0

如果看起來好像我要求別人做我的功課,我會道歉。我自己沒有問題,我只是卡住了,需要幫助理解這一點。 – user951376

回答

0

您可以聲明包含您必須返回的值的ad-hoc類,並使該方法返回對特定對象的引用。

[inside your class] 

public class MyReturnValues { 
    public int a; 
    public int b; 
} 

[...] 

MyReturnValues myMethod() { ... } 
+0

我要去嘗試這個類,我只是無法理解我爲a和b放置什麼,它會是我需要的2個值?那麼這個班級如何將自己與創建的方法聯繫起來,以獲取這些值並將其吐回到主類中作爲值? – user951376

+0

是的,a和b(以及任何其他可能需要的變量)是您在方法返回時必須獲取的值。從用戶角度來看,它會像'MyReturnValues mrs = myObject.myMethod(); x = mrs.a; z = mrs.b;'但是我建議你看一下@「John B」的答案,以便明確地解決Java中的「多個返回值」問題。 –

+0

我曾看過John B的帖子,但我正在嘗試閱讀他提供的鏈接中的信息,並且我可以圍繞它來理解這些信息,P p做了什麼以及它如何工作,直到現在我一直在使用JAVA有道理,我可以將事情聯繫在一起,但這超出了我的意思,至於你發佈的內容,我不明白mrs.a和mrs.b是什麼,謝謝你的意見。我欣賞它:) – user951376

1

雖然,@普勒的答案是這樣做的最傳統的方式。這反覆出現,我建議看FunctionalJava的P組類。有P1-P8分別包裹1-8個對象。有一套簡單的方法P.p爲您創建適當版本的P1-P8。

P Class API

0

的輸入法並不需要計算總和與平均值(這不是它的工作),但簡單地得到,並返回輸入。讓方法返回輸入內容(例如數組),然後將該數組傳遞給總和和平均方法。

+0

我的課程還沒有結束數組,我需要找到一個不同的解決方案。還有什麼想法?我感謝幫助! – user951376

0

嘗試分開不同的任務,你盡力去完成:

  1. 檢索用戶輸入:double[] inputs = readInput();
  2. 執行計算:double sum = sum(inputs); double avg = avg(inputs);
  3. 顯示信息

這是不是一個完美的OO解決方案,但它應該涵蓋您在問題中列出的所有要求。

+0

什麼是readInput()方法以及如何使用它? – user951376

+0

這是'你'的方法,你必須實現它:-) – home

+0

哦好吧,有沒有我必須放在括號內的double []?所以它看起來像double [] input = readDouble(numberString,number,sum,numberCounter){? – user951376

0

您可以使用這樣的事情:

public class TwoTuple<A, B> { 
    public final A firstl; 
    public final B second; 
    public Two Tuple(A a, B b) { first = a; second = b; } 
    public String toString() { 
     return "(" + first ", " + second ")"; 
    } 
} 

然後用上面的類爲您的返回值:

public class Test { 

    static TwoTuple<Double, Double> yourMethodName(YourInputs){ 
    ....... 
    return new TwoTuple<Double, Double>(YourSumResult, YourAverageResult); 
    } 
    public static void main(String[] args) { 
    TwoTuple<Double, Double> result = yourMethodName(YourInputs); 
    System.out.println(result); 
    } 
} 
+0

我在公共靜態TwoTuple readDouble(numberString,number,sum,numberCounter){line。)上試圖獲取類,接口或枚舉。有任何想法嗎? – user951376

+0

你是否在分隔文件中定義了「public class TwoTuple 」並在測試類中使用它? – Am1rr3zA

+0

哦,不,我沒有,所以我做了一個名爲TwoTuple的新.java,定義它。保存並編譯它以使其正常工作? – user951376

相關問題