将方法呼叫到主类不使用Java



我正在编写一个Java代码,其中我必须使用2个给定的输入值来计算求和。我在类总和中创建一种方法。该方法的名称为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;
   }
 }

现在,在主要方法中,我要设置NUM的值并实现一个Switch Case语句,因此当用户首先选择时,它将为结果乘以NUM值。另一方面,如果用户选择第二,它将给出一个乘以NUM值的结果。但是我在开关案例方法中遇到问题,它显示了null POI异常错误。我在代码中更清楚地描述了它 -

public static void main(String[] args) {
    Scanner sc1 =new Scanner(System.in);
    Scanner sc2 =new Scanner(System.in);
    System.out.println("1tFirst: 400n2tSecond: 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;
        }
   }
}

查看方法totalval(..(

 int sum = mod.getNum()*mod.getProd().getValue();

实际上,我相信您在那里有NPE。mod不应ne ne ne null和mod.getProd返回产品,而不是null。

我看不到您在MD对象的位置。

upd。

您不需要两个扫描仪,只能使用一个扫描仪。

upd.2

我猜而不是

int res=Product.FIRST.getValue()*tot.Sum(md); 

你想写

md.setProd(Product.FIRST);
int res = tot.Sum(md); 

和在另一个开关案例中类似。