当我尝试执行此代码时,在选择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填充空值。怎么会发生?
答案 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
等的方法(如果您的代码实际看起来如此)就像在你的编辑器中一样,我建议你重新格式化它......)