0

私が作成したメソッドでは、作成しようとしているのは、ユーザーが入力した文字列の配列を返すことです。私がコンパイラに抱えている問題は、でuserData初期化されない可能性があると言っています。このエラーが発生している理由がわかりません。フィードバックをお願いします。userData[i]=tempData;return userData;

public String[] getStringObj() {
    int i = 0;
    String tempData;
    String[] userData;
    Boolean exitLoop = false;
    System.out.println("Please list your values below, separating each item using the return key.  To exit the input process please type in ! as your item.");
    do {
        tempData = IO.readString();
        if (tempData.equals("!")) {
            exitLoop=true;
        } else {
            userData[i] = tempData;
            i++;
        }
    } while (exitLoop == false);
    return userData;
}
4

3 に答える 3

0

あなたuserDataは初期化されておらず、初期化の前にここでそれを使おうとしていuserData[i]=tempData;ます。

次のように初期化します

String[] userData = new String[20]; 

//20 is the size of array that I specified, you can specify yours

また、あなたのwhile状態では、while(!exitLoop)代わりに持つことができますwhile(exitLoop==false)

于 2012-10-24T05:33:25.617 に答える
0

を初期化しませんでしたString[]。ただやってくださいString[] userData = new String[length]。長さがわからない場合は、を使用することをお勧めしますArrayList<String>

于 2012-10-24T05:33:48.183 に答える
0

コード品質を向上させるために:

  1. exitLoopそのフラグは必要ありません。ただやる

    while(true) {
        String input = IO.readString();
        if(input.equals("!")) {
            break;
        }
        /* rest of code */
    }
    
  2. 境界のない配列に何かを追加したいように思われるので、配列のArrayList代わりに使用します(ボーナスが追加され、これも削除されiます):

    List<String> userData = new ArrayList<String>();
    ...
    userData.add(line);
    

これらの2つのことを行うと、コードははるかに簡潔になり、わかりやすくなります。

于 2012-10-24T05:41:19.853 に答える