Java初学者,为什么我的程序会一直停止?

时间:2017-04-25 12:43:34

标签: java

尝试创建一个计算器,在大约4年前完成了很多这样的计算,然后重新开始使用java。它只是保持终止,它不打印任何东西,运行大约5秒然后终止。任何帮助将不胜感激。

编辑:问题在于主要功能。问题已解决,谢谢!

为那些想要嘲笑我的愚蠢的人添加OOJCalculation代码

public class OOJCalculation {


 int Calculation (int Num1, int Num2, String Function,int Num3){

    if(Function == "+"){

        Num1 += Num2 = Num3;

        return Num3;
    }

    else if(Function == "-"){

        Num1 -= Num2 = Num3;

        return Num3;
    }
    else if(Function == "*"){

        Num1 *= Num2 = Num3;

        return Num3;
    }

    if(Function == "/"){

        Num1 /= Num2 = Num3;

        return Num3;
    }
    return Num3;

}

}

public class Main {

public static void main(){
    int State = 0;
    int Num1 = 0;
    int Num2 = 0;
    String Function = "";
    Scanner reader = new Scanner(System.in);
    OOJCalculation calc = new OOJCalculation();

    while(State < 5){
    if(State == 0){
        System.out.println("Enter first number.");
         Num1 = reader.nextInt();
        State++;
    }
    if(State == 1){
        System.out.println("Enter the function.");
         Function = reader.next();
        State++;
    }
    if(State == 3){

    System.out.println("Enter the second number.");
     Num2 = reader.nextInt();
    State++;
    }

    if(State == 4){
        calc.Calculation(Num1, Num2, Function);
        System.out.println(calc);
    }

}

}

}

2 个答案:

答案 0 :(得分:0)

作为jls州:

  

方法main必须声明为public,static和void。它必须指定一个形式参数(第8.4.1节),其声明的类型是String数组。因此,可以接受以下任一声明:

public static void main(String[] args)

所以你的程序没有运行,因为它找不到main

编辑:

只是说你的代码,循环和条件不是必需的。

public static void main(String[] args ) {
    int State = 0;
    int Num1 = 0;
    int Num2 = 0;
    String Function = "";
    Scanner reader = new Scanner(System.in);

    System.out.println("Enter first number.");
    Num1 = reader.nextInt();
    reader.nextLine(); //Read the <enter> key

    System.out.println("Enter the function.");

    Function = reader.nextLine();

    System.out.println("Enter the second number.");
    Num2 = reader.nextInt();
    System.out.println(Num1 + Function + Num2);
}

答案 1 :(得分:0)

您的主要方法缺少强制性参数:

public class Main {

   public static void main(String[] args){
    ....
   }
}

其次它将终止,因为它将到达块的末尾,然后没有更多的指令来运行。

您的OOJCalculation方法无效:

   int calculation(int num1, int num2, String function) {
    if ( "+".equals(function)) {
        return num1 + num2;
    } else if ( "-".equals(function)) {

        return num1 - num2;
    } else if ( "*".equals(function)) {
        return num1 * num2;
    }else if ( "/".equals(function)) {
        return num1 / num2;
    }
    throw new IllegalArgumentException("Unknown operator");
}

它应该从lowerCase开始。对变量也使用lov \ wwer case。 CamelCase保留给类名和构造函数。您还错误地声明了返回的类型。以上实施是有效的。