2017-11-20 12 views
0

は、私のような文字列を計算します:、トリッキー

を "-4443- 397" // -4840

は "-8844443/-73897" // 119

を返す必要が返す必要があります

"4433 * -7" // -31038

"4 * -5897は、" //返す必要があります返す必要があり-23588

https://imgur.com/a/vzLix

非常に難しくて扱いにくいですが、文字列をどのように計算する必要がありません。 問題は、空白を削除していない、より多くの私は上記の文字列を計算する必要があります。 :(

public static int calc(String input) { 

    String noSpaces = ""; 
    int i = 0; 

    while (i < input.length()) { 
     if (input.charAt(i) != ' ') { 
      noSpaces = input.charAt(i); 
     } 
     i++; 
}  
+0

あなたがオペレータの前にスペースを追加する場合は、解析するスキャナを使用することができます –

+0

あなたの問題がスペースについてのものではない場合は、今あなたの正確な問題は何ですか?どのように問題を解決したいのですか?必要なステップとは何ですか?あなたに問題がありますか? – Murmel

+0

私はあなたの最初の問題は次のようなものだと思います:結果を計算するために、符号付き数値(オペランド)とその演算子を式(文字列として与えられます)から抽出する方法は? – Murmel

答えて

0

1桁の数字でしか動作

パブリッククラス電卓{

static int calc(String input) { 
    String nsp = ""; 
    int nr1; 
    int nr2; 
    char op; 
    int result = 0; 

    for (int i = 0; input.length() > i; i++) { 

     if (input.charAt(i) != ' ') { 
      nsp = nsp + input.charAt(i); 
     } 

    } 

    if (nsp.charAt(0) == '+' || nsp.charAt(0) == '-') { 
     nr1 = Integer.parseInt(nsp.substring(0, 2)); 
     op = nsp.charAt(2); 
     if (nsp.charAt(3) == '+' || nsp.charAt(3) == '-') { 
      nr2 = Integer.parseInt(nsp.substring(3, 5)); 
     } else { 
      nr2 = Integer.parseInt(nsp.substring(3, 4)); 
     } 
    } else { 
     nr1 = Character.getNumericValue(nsp.charAt(0)); 
     op = nsp.charAt(1); 
     if (nsp.charAt(2) == '+' || nsp.charAt(2) == '-') { 
      nr2 = Integer.parseInt(nsp.substring(2, 4)); 
     } else { 
      nr2 = Integer.parseInt(nsp.substring(2, 3)); 
     } 
    } 

    if (op == '+') { 
     result = nr1 + nr2; 
    } 

    if (op == '-') { 
    result = nr1 - nr2; 
    } 

    if (op == '*') { 
     result = nr1 * nr2; 
    } 

    if (op == '/') { 
     result = nr1/nr2; 
    } 

    return result; 
} 

}