2015-11-03 5 views
0

У меня проблемы с компиляцией моего класса. Это дает мне ошибки, такие как «double не может быть разыменован» и «не может найти символ».Использование массивов как метода (Java)

водолаз:

public class MinilabArraysDriver{ 
    public static void main(String[ ] args){ 
     //create a 1d array of ints 
     int[ ] array1d = { 8, 8, 7, 5, 3 }; 

     //call mean1d Method to find the mean (note the static call...) 
     double theMean = MinilabArrays.mean1d(array1d); 

     //print the original array and the mean 
     System.out.print("The mean of: { "); 
     for (int i=0; i<array1d.length; i++){ 
       if (i != 0) 
        System.out.print(" "); 
      //print first for separation (except before first element) 
      System.out.print(array1d[i]); 
     } 
     System.out.print(" } is: " + theMean); 
     //------------------------------------------------------------ 
     System.out.println("\n\n"); 
     //create a 2d array of doubles 
     double[ ][ ] array2d = {{ 3.4, 5.1, 8.0}, 
           { 5.23, 8.2 }, 
           { 10.7 }, 
           { 2.9 } 
           }; 
     //call sum2d to get the sum 
     double total = MinilabArrays.sum2d(array2d); 

     //print the 2D array 
     for (int row=0; row<array2d.length; row++){ 
      System.out.println(); 
      for (int col=0; col<array2d[row].length; col++) 
        System.out.print(array2d[row][col] + "\t"); 
      } 
     //print the result 
     System.out.println("\n\nTotal of 2d array is: " + total); 
     System.out.println("\n\n"); 
     } 
} 

А вот класс, который я пытаюсь написать:

public class MinilabArrays{ 
    public static double mean1d(int[ ] theMean){ 
    double total = 0; 
    for (int i = 0 ;i < theMean.length ; i++){ 
      total = total + theMean [ i ]; 
      total = total/theMean.length; 
      return total; 
     } 
    } 

    public static double sum2d(double [ ] theSum){ 
    double total2, total3, total4 = 0; 
    for(int row=0 ; row < theSum.length ; row++){ 
     for (int col=0 ; col<theSum[row].length ; col++) 
      total2 = total2 + theSum[col]; 
     } 
    total3 = total3 + theSum[row]; 
    total4 = total3 + total2; 
    return total4; 
    } 
} 

Для «mean1d» Я пытаюсь найти среднее или среднее данное число, а для «sum2d» я пытаюсь найти общее количество данного номера.

Извините, если мой код глуп или тупой. Я не могу проверить это, если это не позволит мне скомпилировать.

Спасибо, что помогли мне!

+0

точно, какие ошибки вы получаете? –

+0

Когда вы его скомпилируете, вы обнаружите, что цикл в 'mean1d' на самом деле не является циклом. Он выполнит только один раз, а затем уйдет. – ajb

+0

Я получаю «double не может быть разыменован» и «не может найти символ». – Paincakes

ответ

1

Вы вызываете метод sum2d, передавая 2D-массив в параметре и объявляя этот метод как 1D-массив в качестве параметра.

MinilabArrays.java

public static double sum2d(double[][] theSum) { 
    double total2 = 0; 
    for (int row = 0; row < theSum.length; row++) { 
     for (int col = 0; col < theSum[row].length; col++){ 
      total2 = total2 + theSum[row][col]; 
     } 
    } 
    return total2; 
} 
+0

Получил это! Спасибо всем за помощь. Объектно-ориентированное программирование очень сложно для меня обернуть голову. – Paincakes

1

Первая ошибка исходит из этой строки for (int col=0 ; col<theSum[row].length ; col++). Вы используете двумерный массив theSum[][], но объявили одномерный массив как параметр метода.

Другая ошибка возникает из-за использования row за пределами ее объема. Вы объявили его внутри этого цикла for for(int row=0 ; row < theSum.length ; row++), но использовали его вне цикла for.

+0

Как это исправить? Число в самом массиве - это double, но col и row - int. – Paincakes

+0

@Paincakes Сравнение просто невозможно. Вы должны заново подумать, что делаете. – Alexander

1

MinilabArrays.sum2d (array2d) требует двойной [] не двойной [] [] здесь. А также в этот момент всего3 = всего3 + theSum [ряд]; не может получить доступ к переменной строка вне цикла for.

+0

Я просто положил «total3 = total3 + theSum [row];» внутри цикла for. \t \t { \t для (int col = 0; col Paincakes

Смежные вопросы