java - 有没有办法在另一种方法中使用随机数组方法中的现有变量?

标签 java arrays random methods

我想将在我的 randomRainMonth() 方法中生成的变量用于另一个方法 totalRain() 中的计算。但是通过在我的 totalRain() 中使用 double[] totalsum = randomRainMonth(list); 它只会生成一组新的随机变量,因为它会再次调用该方法。谁能帮忙?

public class RainFall{

  public static void main (String[] args){

    double [] monthRain = new double[12];
    String[] monthName = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    randomRainMonth(monthRain);
    System.out.println("-------");
    totalRain(monthRain, monthName);
//    printMonths(monthName);
  }

  public static String[] printMonths(String list[]){     
    String[] pM = new String[list.length];  
    for (int i = 0; i<list.length; i++) {
        //System.out.println(list[i]);
      }
    return pM;
  }

    public static double[] randomRainMonth(double list[]){
      double[] rdMonth = new double[list.length];

      for(int i = 0; i < list.length; i++){
        rdMonth[i] = (int)(Math.random() * 100);
        //System.out.println(rdMonth[i]);
      }
      return rdMonth;
  }

    public static double[] totalRain(double list[], String list2 []){

      String[] mnth = printMonths(list2);
      double[] totalsum = randomRainMonth(list);

      double sum = 0;
      for( double i : totalsum) {
        sum += i;
      }


      for (int i = 0; i<list2.length; i++) {

      System.out.print(mnth[i] +": ");
      System.out.println(totalsum[i]);
      }
      System.out.println("Total: ");
      System.out.println(sum);

      return totalsum;

    }
}

[已解决] 最终代码:

public class RainFall{

  public static void main (String[] args){


    double[] monthRain = randomRainMonth();
    String[] monthName = printMonths();
//    randomRainMonth();
    System.out.println("-------");
    totalRain(monthRain, monthName);
//    printMonths(monthName);
    avgRainMonthly(monthRain);
  }

  public static String[] printMonths(){     
    String[] monthName = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};  
    for (int i = 0; i<12; i++) {
        //System.out.println(monthName[i]);
      }
    return monthName;
  }

 public static double[] randomRainMonth(){

      double [] monthRain = new double[12];
      for(int i = 0; i < 12; i++){
        monthRain[i] = (int)(Math.random() * 100);
        //System.out.println(monthRain[i]);
      }
      return monthRain;
  }

    public static double[] totalRain(double list[], String list2 []){

      String[] mnth = list2;
      double[] totalsum = list;

      double sum = 0;
      for( double i : totalsum) {
        sum += i;
      }


      for (int i = 0; i<12; i++) {

      System.out.print(mnth[i] +": ");
      System.out.println(totalsum[i]);
      }
      System.out.println("Total: ");
      System.out.println(sum);

      return totalsum;

    }

    public static double[] avgRainMonthly(double list []){

      double[] average = list;

      double avg = 0;
      double finAvg = 0;
      for( double a : average) {
        avg = avg + a;
        finAvg = avg / 12;
      }
      System.out.println(finAvg);
      return average;
    }
}

最佳答案

您不应该在 randomRainMonth(monthRain); 方法调用之前创建 double [] monthRain = new double[12];,因为实际的数组对象需要由 randomRainMonth 方法创建和返回。

相反,您需要在main 中声明一个double[] 数组monthRain,然后收集 返回的结果randomRainMonth(monthRain) 如下:

//declare the double array
double[] monthRain = randomRainMonth();

randomRainMonth() 方法更改如下:

public static double[] randomRainMonth(){
      //this method should be responsible to create the double array object 
      //and then return it to the caller after populating with elements
      double [] monthRain = new double[12];

      for(int i = 0; i < list.length; i++){
        rdMonth[i] = (int)(Math.random() * 100);
        //System.out.println(rdMonth[i]);
      }
      return monthRain;
  }

现在,您可以将收集的数组(由 randomRainMonth 返回)传递给下一个方法,如下所示(您已经在做):

totalRain(monthRain, monthName);

关于java - 有没有办法在另一种方法中使用随机数组方法中的现有变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40445626/

相关文章:

c - 在结构中使用字符串

python - 使用和随机化代理

java - 有效地查找和替换包含 html 的大型 kml 文件?

java - Fragments 中的 commit() 和 commitAllowingStateLoss() 有什么区别

JavaScript 数组 : set entry to undefined

arrays - 在数组中的指定索引位置添加元素。电源外壳

Java 版本判断错误

java - 我想打印带有破折号对角线的 X 的完整正方形

c++ - 在 C++ 中生成随机数在计算上有多昂贵?

r - 生成具有固定均值和标准差的随机数