2016-11-06 5 views
2

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; 

    } 
} 

[SOLVED] 최종 코드 : 실제 배열 객체 생성 및 방법 randomRainMonth에 의해 반환 될 필요가 있기 때문에

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; 
    } 
} 
+0

'totalRain'에서 메소드를 다시 호출하지 마십시오.'list1'과'list2'가 있습니다 - 실제로'totalRain'에서 무엇을 원합니까? –

답변

1

당신은, 앞서 randomRainMonth(monthRain); 메소드 호출의 double [] monthRain = new double[12];를 작성해서는 안됩니다.

//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(monthRain)에 의해 반환되는 결과를 수집 한 후 maindouble[] 배열 monthRain를 선언 할 필요가 수집 된 배열 (randomRainMonth에 의해 반환 된)을 다음 방법으로 전달할 수 있습니다 (이미 수행 중입니다) :

totalRain(monthRain, monthName); 
+0

정말 고마워요! 그러나 당신이 준'randomRainMonth()'메소드의 코드는 옳지 않습니다. 나는 최종 코드를 게시했다. 다시 귀하의 도움을 주셔서 대단히 감사합니다 –

+0

위의 수정 된 월별 변수에 대해 이야기하고 있습니다. – developer

관련 문제