我正在编写一个java代码,我必须通过使用2个给定的输入值来计算求和。我在类Sum中创建了一个方法。方法的名称是totalVal。现在在主类中,我想在switch case语句中调用它。我用以下方式描述我的代码 -
首先,我创建了一个包含两个常量值的枚举类
public enum Product {
FIRST(400), SECOND(500);
private int value;
private Product(int value){
this.value=value;
}
public int getValue() {
return value;
}
}
现在在模型类中,我调用这个enam类并创建另一个名为num的值,并为此设置getter和setter。
public class Model {
private Product prod;
private int num;
public Product getProd() {
return prod;
}
public void setProd(Product prod) {
this.produkte = produkte;
}
public int getNum() {
return num;
}
public void setNume(int num) {
this.prod = prod;
}
}
现在我为计算方法
创建另一个类public class Sum{
public int totalVal(Model mod){
int sum = mod.getNum()*mod.getProd().getValue();
return sum;
}
}
现在在main方法中我想设置num的值并实现switch case语句,这样当用户选择First时,它会给出一个乘以num值的结果。另一方面,如果用户选择SECOND,它将给出一个乘以num值的结果。但是我在switch case方法中遇到问题,它显示了null poi异常错误。我在代码中更清楚地描述了它 -
public static void main(String[] args) {
Scanner sc1 =new Scanner(System.in);
Scanner sc2 =new Scanner(System.in);
System.out.println("1\tFirst: 400\n2\tSecond: 700 ");
System.out.println("Please choose your 1 for Compact and 2 for product");
int swichValue=sc1.nextInt();
Model md=new Model();
System.out.println("enter number");
md.setNum(sc2.nextInt());
switch(swichValue){
case 1:{
Sum tot=new Sum();
int res=Product.FIRST.getValue()*tot.Sum(md); //having problem here I am not sure how to call the method here.
System.out.println("total value is : "+res);
break;
}
case 2:{
int res=Product.SECOND.getValue()*tot.Sum(md);// problem
System.out.println("total value is : "+res);
break;
}
}
}
答案 0 :(得分:1)
查看方法totalVal(..)
int sum = mod.getNum()*mod.getProd().getValue();
事实上,我相信你在那里得到了NPE。 mod应该不是Null,mod.getProd应该返回Product但不返回null。
我没有看到你将产品放在你的md对象的哪个位置。
UPD。
您不需要两台扫描仪,只需一台扫描仪即可。
UPD.2
我想而不是
int res=Product.FIRST.getValue()*tot.Sum(md);
你想写吗
md.setProd(Product.FIRST);
int res = tot.Sum(md);
和另一个案例类似。