0

プログラミングのクラスで、先生から「数関数数」タイプの形式で機能する電卓を作るように言われました。文字列が有効かどうかをチェックするメソッドを書いているときに、スペースの後の文字列のチェックを停止することに気付きました。継続して確認するにはどうすればよいですか?分割して確認するしかなかったのですが、やり方がわからず…

次のように文字列を分割するにはどうすればよいですか。

String s = "2345 * 2341";

次の方法で:

String String1 = 2345;
String String2 = 2341;

次に、各文字列をチェックして有効であることを確認するにはどうすればよいですか? これまでのところ:(注:私はプログラミングの初心者です)

   public boolean validNumber() throws IOException {
    input = getUserInput();
    boolean valid = false;
    int i = 0;
    for (valid = true; i < input.length();) {
        if (input.charAt(i) == '0' 
                && input.charAt(i) == '1' 
                && input.charAt(i) == '2' 
                && input.charAt(i) == '3' 
                && input.charAt(i) == '4' 
                && input.charAt(i) == '5' 
                && input.charAt(i) == '6' 
                && input.charAt(i) == '7' 
                && input.charAt(i) == '8' 
                && input.charAt(i) == '9') {
            valid = true;

        }else{
            valid = false;
        }
        i++;
    }

    return valid;
}



public void check() throws IOException {
    boolean valid = validNumber();
   int i = 0;
    while (valid = true && i < 1){

    if (input.contains(" + ")) {
        plus();
    } else if (input.contains(" - ")) {
        minus();
    } else if (input.contains(" / ")) {
        divide();
    } else if (input.contains(" * ")) {
        multiply();

    }else {
        System.out.println("Error Incorrect Input");
        System.out.println("Reinput your numbers");

    }
        check();

        }
    }
}
4

5 に答える 5

2

メソッドを使用しsplitて文字列を分割できます。分割された文字列が有効かどうかを確認するには、Long.parseLongメソッドを使用します。文字列が有効な数値でない場合は、NumberFormatException.

    String s = "2345 * 23s41";
    String[] strings = s.split("\\*");    //Split strings
    string1 = strings[0].trim();
    string2 = strings[1].trim();

次の方法で有効性を確認できます。

public boolean isValid(String s)
{
    try
    {
        Long.parseLong(s);
    }
    catch(NumberFormatException e)
    {
        return false;
    }
    return true;
}
于 2013-05-27T17:20:37.417 に答える
1

スペースを削除したい場合は、トリミングの代わりにこれを行うこともできます:

String s = "2345 * 2341";
String[] strings = s.split(" \\* ");
于 2013-05-27T17:25:01.870 に答える
1

次のように文字列を分割できます。

String string = "1234*4321";
String[] strings = string.split("\\*");
String string1 = strings[0]; 
String string2 = strings[1]; 
于 2013-05-27T17:19:34.543 に答える
0

フォームの適切な形式の文字列が常にあることが保証されている場合は<operand1> <operator> <operand2>、次の方法でさまざまな部分を分離できます。

String expression = "2345 * 2341";
String[] expressionParts = s.split(" ");

System.out.println(expressionParts[0].equals("2345")); //prints True
System.out.println(expressionParts[1].equals("*")); //prints True
System.out.println(expressionParts[2].equals("2341")); //prints True
于 2013-05-27T18:15:52.550 に答える
0

以下はサンプルコードです。

String String1 = null;
String String2 = null;
String strNumber = "1234*4321";
String delimeter = "\\*";
if(strNumber != null)
{
    String[] parts = strNumber.split(delimeter);
    if(parts.length == 2)
    {
    String1 = parts[0];
    String2 = parts[1];
    }
}

それが役に立てば幸い。

于 2013-05-27T18:51:49.057 に答える