【发布时间】:2017-04-20 23:00:14
【问题描述】:
我正在编写一个 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;
}
}
}
【问题讨论】:
-
tot.Sum -> tot.totalVal(mod) 什么是“mod”?那里不应该是“md”吗?
-
@iMysak 我已修改。但仍然收到错误 java.lang.NullPointerException
-
向我们展示 NPE 的堆栈跟踪。它会告诉你它发生在哪一行,这在试图弄清楚它时很有帮助......
-
Sum tot=new Sum();你有一个名为tot的变量,它是Sum类的对象。tot.Sum(md)试图在对象tot上调用名为Sum的方法——但 classSum没有方法 named @987654333 @,它只有一个名为totalVal的方法...例如tot.totalVal(md)
标签: java enums switch-statement method-call