2014-11-29 3 views
0

Когда я пытаюсь выполнить этот код, после выбора AMD я получил нулевое значение. как это может произойти? ниже исходный код:
[для основных]Получите нулевое значение от другого объекта в Java, но получите значение в собственном классе

public class processor{ 
    public int hargapro; 
    public String nmbarangpro; 
    public static final Scanner input = new Scanner(System.in); 
    public String getpro() 
    { 
     return nmbarangpro; 
    } 
    public int getproharga() 
    { 
     return hargapro; 
    } 
    public void daftarpro() { 
     List<String> daftarpro = new ArrayList<>(); 
     daftarpro.add("AMD"); 
     daftarpro.add("Intel"); 
     List<String> nomer = new ArrayList<>(); 
     nomer.add("1. "); 
     nomer.add("2. "); 
     System.out.println("Processor yang tersedia :"); 
     for (int i = 0; i < daftarpro.size(); i++) { 
      System.out.println(nomer.get(i)+daftarpro.get(i)); 
      } 
     System.out.println("Pilihan anda : "); 
     int pilih = input.nextInt(); 
     switch(pilih) 
     { 
      case 1: 
      { 
      System.out.println("Anda membeli Processor AMD"); 
      System.out.println("Seharga Rp 1.200.000"); 
      harga(1200000); //call harga method 
      namabarang("AMD"); //call namabarang method 
      System.out.println(getpro()); //[for testing]filled with AMD[ni problem here] 
      System.out.println(getproharga()); //[for testing][filled with 1200000[no problem here] 
      break; 
      } 
      case 2: 
      { 
      System.out.println("Anda membeli Processor AMD"); 
      System.out.println("Seharga Rp 1.200.000"); 
      harga(1500000); 
      namabarang("Intel"); 
      break; 
      } 
      default: 
      System.out.println("Pilihan tidak tersedia"); 
      daftarpro(); 
     } 

     } 
    @Override 
    public int harga(int hargamasuk) { 
     return hargapro = hargamasuk; 


    } 

    @Override 
    public String namabarang(String barang) { 
     return nmbarangpro = barang; 
    } 
    public static void main(String[] args) { 
     processor a = new processor(); 
     a.daftarpro();//get menu from daftarpro() 
     kasir x = new kasir(); 
     x.semua();//get null in value 
    } 
     } 

моих вторых файлов:

public class kasir { 
public void semua() 
{ 
    processor a = new processor(); 
    System.out.println(a.getpro()); 
}} 

Когда я пытаюсь прочитать значение через класс kasir, я получаю x.semua заполнен с нулевым значением , как это может произойти?

ответ

1

Ваш метод semua создает новый экземпляр processor который затем считывает с:

public void semua() 
{ 
    processor a = new processor(); 
    System.out.println(a.getpro()); 
} 

Это совершенно не связано с processor Например, вы создали в вашем методе main. Если ваш kasir класс должен логически «знать о» другом processor Например, вы, вероятно, хотите processor поля в классе, который вы могли бы заселить через конструктор - таким образом метод main может стать:

public static void main(String[] args) { 
    processor a = new processor(); 
    a.daftarpro(); 
    kasir x = new kasir(a); 
    x.semua(); 
} 

Как и в стороне , вы должны действительно попытаться следовать соглашениям об именах Java, поэтому классы Processor и Kasir и методы getPro и т. д. (И если ваш код на самом деле выглядит так, как в вашем редакторе, я также предлагаю вам переформатировать его ...)

+0

Извините за мой английский раньше, Большое вам спасибо за помощь , этот вопрос разрешен. я попытаюсь изучить соглашения об именах java. –

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