2017-02-09 7 views
-2

if/elseステートメント内の他の2つのメソッドの呼び出しを含むメソッドを呼び出そうとしています。私はどのメソッドが呼び出されるか指示するためにユーザーの入力を求めます。 if/elseステートメントの内部のメソッドは、ステートメントの内部にないときに機能します。 if/elseステートメントからそれらを呼び出すと、何も返されず、プログラムは終了します。誰でも知っている理由は?ここで メイン以外のif/elseステートメントの内部から呼び出されたJavaメソッドを返す際の問題

は方法です:

public String infixpostfix(String inf){ 

    boolean spellcheck = false; 
    String type = null; 
    String result = null; 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Is your input \"postfix\" or \"infix\""); 
    type = scan.nextLine(); 
    while (spellcheck == false){ 
     if (type.equals("infix")||type.equals("postfix")){ 
      spellcheck = true; 
     continue; 
     } 
     else 
      System.out.println("Please enter a valid option. \"postfix\" or \"infix\""); 
     type = scan.nextLine(); 
    } 
    if (type .equals("infix")){ 
     result = postfix(inf); 
     System.out.println("The postfix is: "); 
    } 
    else if (type.equals("postfix")){ 
     result = infix(inf); 
     System.out.println("The infix is: "); 
    } 

    return result; 
} 

これは、メインメソッド(それは同じプログラムにあります)です:入力の

public static void main(String[] args){ 
     Scanner scan = new Scanner(System.in); 
     MyStack ugh = new MyStack(); 
     System.out.println("Enter the equation"); 
     String inf = scan.nextLine(); 
     ugh.infixpostfix(inf); 
    } 
} 

サンプル - 出力:ここにある

Enter the equation 
ab*+ 
Is your input "postfix" or "infix" 
postfix 
The infix is: 

この例で呼び出されるメソッド:

public String infix(String inf){ 
    //a + b * c + (d * e + f) * g 
    //into postfix. A correct answer is a b c * + d e * f + g * + 

    MyStack<String> holder2 = new MyStack(); 
    String inf2 = inf.replaceAll("\\s+",""); 
    int equationindex = 0; 

    String eq = null; 

    for (int infindex = 0; infindex < inf2.length(); infindex++){ 
     boolean operand = false; 
     if (Character.isDigit(inf2.charAt(infindex))||Character.isLetter(inf2.charAt(infindex))){ 
      operand = true; 
     } 

     if (operand == true){ 
      holder2.push(Character.toString(inf2.charAt(infindex))); 
      continue; 
     } 
     else { 
      String temp2 = holder2.pop();    
      String temp = holder2.pop(); 
      eq = ("(" + temp + inf2.charAt(infindex) + temp2 + ")"); 
      holder2.push(eq); 
      continue; 
     } 
    } 
    return eq; 
} 
+0

ああ、私があなたを誤解していない場合、重要な点はタイプを次の入力にリセットすることです。ユーザーのスペルがifステートメントと一致する場合、プログラムは移動しますが、有効でない場合は、有効な入力を再入力する必要があります。 –

+0

"The infix is"が印刷されているので、プログラムは明らかにそれを私が行くつもりにしています。私は本当にresult = infix(inf)がreturn文によって返されない理由を理解できません。 –

+0

あなたの質問に回答を編集しないでください。質問は現状のままです。むしろ、誰かが提供し、あなたの問題を解決する答えがある場合は、その横のチェックマークをクリックして受け入れます。 http://stackoverflow.com/help/someone-answers –

答えて

1

結果が印刷されません。

変更

System.out.println("The postfix is: "); 

System.out.println("The postfix is: " + result); 

へと挿入辞のために同じことを行います。

関連する問題