从一个方法生成2个值

时间:2011-09-18 16:03:43

标签: java

我需要能够从输入法的方法获得number和numberCount的值。

我正在做的任务是......

设计并实现一个Java程序,该程序将收集浮点数并确定输入数据的总和和平均值。程序应使用单独的方法输入数据,计算总和,计算平均值,并显示结果。应使用标记值表示用户已完成输入其号码。输出应显示一条消息,其中包括输入的数字的数量,数字的总和以及数字的平均值。如果数字的总和大于100,则应显示一条警告消息,指示“值已超过总和100”。

  1. 其他要求包括:
  2. 一个。使用JOptionPane.showInputDialog()方法为您的用户输入数据

    湾使用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;   
      }
      }
    }
    

    非常感谢您的回复,但是我可以举一个如何在我的脚本中使用它的示例吗?我很困惑,很少睡觉,最后一天的一切都是这个任务我很油腻。哈哈爪哇肯定能让你失望。

    是的,它不起作用,但我需要主方法中输入法的值,所以输出数据是正确的。

    我的类还没有做数组,所以我的教师期待的东西比数组少。

5 个答案:

答案 0 :(得分:1)

虽然,@ Puller的答案是最传统的做法。这种情况一次又一次地出现我建议查看FunctionalJava的P类。 P1-P8分别包含1-8个物体。有一套简单的方法 P.p 可为您创建适当的P1-P8版本。

P Class API

答案 1 :(得分:0)

您可以声明包含必须返回的值的ad-hoc类,并使该方法返回对ad-hoc对象的引用。

[inside your class]

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

[...]

MyReturnValues myMethod() { ... }

答案 2 :(得分:0)

输入法不需要计算总和和平均值(并且它不是它的工作),而是简单地获取并返回输入。让方法返回输入的内容(例如数组),然后将该数组传递给sum和average方法。

答案 3 :(得分:0)

尝试将您尝试完成的不同任务分开:

  1. 检索用户输入:double[] inputs = readInput();
  2. 执行计算:double sum = sum(inputs); double avg = avg(inputs);
  3. 显示消息
  4. 这不是一个完美的OO解决方案,但它应该涵盖您在问题中列出的所有要求。

答案 4 :(得分: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);
  }
}