从Java中的另一个对象获取null值,但在自己的类中获取值

时间:2014-11-29 10:04:13

标签: java oop object

当我尝试执行此代码时,在选择AMD之后,我的值为null。怎么会发生? 以下是源代码:
[主要]

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 个答案:

答案 0 :(得分:1)

您的semua方法会创建一个processor的新实例,然后从中读取:

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

这与您在processor方法中创建的main实例完全无关。如果您的kasir类在逻辑上“了解”另一个processor实例,那么您可能需要在类中使用processor字段,您可以通过构造函数填充该字段 - 所以您的{{1方法可能会变成:

main

顺便说一句,您应该尝试遵循Java命名约定,因此public static void main(String[] args) { processor a = new processor(); a.daftarpro(); kasir x = new kasir(a); x.semua(); } Processor的类以及Kasir等的方法(如果您的代码实际看起来如此)就像在你的编辑器中一样,我建议你重新格式化它......)