2017-04-25 30 views
-3

試圖創建一個計算器,大約4年前完成了很多這個,然後回到java。它只是終止,它不打印任何東西,運行約5秒鐘,然後終止。任何幫助將非常感激。Java初學者,爲什麼我的程序保持終止?

編輯:問題是與主要功能。問題解決了,謝謝!

添加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

請提供[mcve]。 – assylias

+0

使用打印語句進行調試。然後來這裏 – FallAndLearn

+0

無法找到可以給你的東西,所以_assylias_說,提供一個mcve。有趣的是,你的'while'循環沒有必要 – AxelH

回答

0

由於jls狀態:

的方法主要必須b e宣佈公開,靜態和無效。它必須指定一個形式參數(§8.4.1),其聲明類型是String數組。因此,無論下面的聲明是可以接受的:

所以,你的程序不運行,因爲它無法找到main

編輯:

只是說你的代碼,循環和conditon不necessay。

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); 
} 
+0

返回的結果只是「1 + 2」而不是3 – user2592518

+0

當然,我沒有使用你的課,我讓你管理這個部分。 ;)這只是關於主 – AxelH

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"); 
} 

應該與小寫開頭。變量也使用lov \ wwer大小寫。 CamelCase被保留用於類名和構造函數。您還錯誤地聲明瞭返回的類型。以上的實施是協調的。

+0

中的不必要的行這是有效的,它不是標準的,但這是有效的。 – AxelH

+0

從語言的角度來看 - 是的。但不是從編程文化的角度來看。 – Beri

+1

我同意!不是每種語言都可能,但我們,Java開發人員,像CamelCase。 – AxelH