2013-10-08 2 views
-1

Мне нужно написать программу, которая записывает 12 месяцев прибыли для 5 разных магазинов в 2D-массиве. Я заставил конструктора принять участие в прибыли. Когда я пытаюсь скомпилировать, в моем методе totalProfit есть проблема. В нем говорится, что «double не может быть разыменован» и выделяет .length часть моего первого цикла for.Я продолжаю получать «double не может быть разыменован» в Java

import java.util.*; 
public class Profits 
{ 
    static private double[][] profit=new double[5][12]; 
    private Scanner in=new Scanner(System.in); 
    public static void main(String[] args){ 
     System.out.println("Please input your profits, each month at a time."); 
     Profits year11=new Profits(); 
     System.out.println(Arrays.deepToString(profit)); 
    } 
    public Profits(){ 
     for(int b=0; b<profit.length; b++){ 
      for(int m=0; m<profit[0].length; m++){ 
       profit[b][m]=in.nextDouble(); 
      } 
     }  
    } 
    public double totalProfit(){ 
     double profit=0.0; 
     for(int b=0; b<profit.length; b++){ 
      for(int m=0; m<profit[0].length; m++){ 
       profit+=profit[b][m]; 
      } 
     } 
     return profit; 
    } 

}

+0

-1 для определения неисправности линии. –

+0

@HotLicks Он говорит, что выделяет часть '.length' первого цикла' for'. И, насколько мне известно, это гораздо более полезно, чем номер строки, который заставляет меня подсчитывать строки (чего я не буду делать). – nhgrif

+0

Он должен прокомментировать «виноватую» линию. –

ответ

8

Вы объявили локальную переменную типа double с таким же именем, как double[][] массив.

double profit=0.0; 

Переменная profit теперь скрывает переменную экземпляра.

  • Любое изменение названия переменной - предпочтительнее.
  • Или квалифицировать доступ к массиву profit с помощью this ->this.profit.length, this.profit[0].length - просто для того, чтобы ответить.
+1

Самый быстрый пистолет на западе – arynaq

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