0

CSクラスの割り当てのためのプログラムを書いています。

基本的には、コマンドライン引数を取るメソッドです。CSVのようなものなので、私がマージする呼び出しを呼び出すために、csvが続きます。

例:マージ1,2,3,4 5,6,7,8

これは2つのことを行います。1)各リストを配列引数として受け取り、1つの大きな配列にマージします。2)その配列を並べ替えます。

これがキャッチです。コマンドラインからnull値を処理する必要があります。したがって、ユーザーは次の情報を入力できます。

マージ1,2、、3,4 5,6

どうすればこれに対処できますか?

エラー出力の例:

Enter commands:
merge 12,,2 43
java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:493)
    at java.lang.Integer.parseInt(Integer.java:514)
    at CmdInterpreter.strArrayToIntArray(CmdInterpreter.java:143)
    at CmdInterpreter.getIntArray(CmdInterpreter.java:130)
    at Assign1.processOneCommand(Assign1.java:99)
    at CmdInterpreter.processCommands(CmdInterpreter.java:198)
    at CmdInterpreter.processCommands(CmdInterpreter.java:230)
    at CmdInterpreter.ooMain(CmdInterpreter.java:243)
    at MyAssign1.main(MyAssign1.java:20)
4

4 に答える 4

1

parseIntを呼び出すときは、呼び出しをtry/catchブロックでラップします。NumberFormatExceptionをキャッチした場合は、文字列を破棄し、値の数をデクリメントします。

編集:どうやってそれをしますか?このようなもの:

int[] extractValues(String arg) {
    String[] sValues = arg.split(",");
    int n = values.length;
    int[] values = new int[n];
    for (int i = 0; i < n; ++i) {
        try {
            values[i] = Integer.parseInt(sValues[i]);
        } catch (NumberFormatException e) {
            --n;
        }
    }
    // reallocate values array if there were problems
    if (n < values.length) {
        int[] tmp = new int[n];
        System.arraycopy(values, 0, tmp, 0, n);
        values = tmp;
    }
    return values;
}
于 2011-01-26T05:40:07.570 に答える
0

list1をnullまたはlist2、あるいはその両方としてフィードできることがわかりました。しかし、それらの配列の要素ではありません...意味私はこの割り当てで問題にならない何かを試していました。

于 2011-01-27T22:14:11.760 に答える
0

そこに整数がないというイベントを処理する必要があります。入力の整合性をチェックせずに、単に盲目的に入力をループしているように見えます。そのため、例外が発生します。

これを行う適切な方法は、解析している現在のデータが有効であることを確認するチェックメカニズムを設定することです(この場合、それは整数であることを意味します)。

これは学校の課題であると明確に述べられているため、私の答えは非常にあいまいなままです。したがって、この答えを使用して、適切なソリューションの実装を実験および学習する必要があります。

于 2011-01-26T05:38:08.653 に答える
0

StringUtils.splitは、これを行うための約10の方法を提供するはずです。

于 2011-01-27T22:33:05.740 に答える