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



当我尝试执行此代码时,在我选择 AMD 后,我的值为空。 怎么可能发生?以下是源代码:
[用于主]

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 填充了空值。 怎么可能发生?

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

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

这与您在main方法中创建的processor实例完全无关。如果你的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方法等(如果你的代码在你的编辑器中看起来真的是这样的,我建议你也重新格式化它......

最新更新