当我尝试执行此代码时,在我选择 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
方法等(如果你的代码在你的编辑器中看起来真的是这样的,我建议你也重新格式化它......