-1
public static void getVegetableFromUser()
{
 String[] veg = SandwichDB.getVegetable();
    HashMap<String, String> getMapVegPrice = SandwichDB.getMapVegPrice();
    int vegSave = Validator.getInt(Scanner, "Select Vegetables [1, 8]: ", 1, 8);
    String v = veg[vegSave-1];
    sandwich.setVegetables(v);
}

わかりましたので、コンソールが出力されます

=== サンドイッチ野菜の選択 ===
赤玉ねぎ 1 個 $0.10
オリーブ 2 個 $0.10
ピクルス 3 個 $0.10
レタス 4 個 $0.20
ピーマン 5 個 $0.25
トマト 6 個 $0.30
7 チーズ $0.49
8 野菜セクションを終了 野菜
を選択 [1, 8]:

アイデアは、野菜セクションを終了する 8 つを選択するまで、複数の野菜を選択できるようにすることです。どうすればそれを行うことができますか?else-if ステートメントで?

また、野菜は文字列ではなく配列である必要があります...次の行のように: String v = veg[vegSave-1].

私のSandwichDB.appのコードは次のとおりです。

public static String[] getVegetableInfo()
{
    ArrayList<String> vegsList = new ArrayList<>();

    try (BufferedReader in =
            new BufferedReader(
            new FileReader("vegetable.txt")))
    {
        String line = in.readLine();
        while (line != null)
        {
            String[] elems = line.split("~");
            vegsList.add(elems[0] + " $" + elems[1]);
            line = in.readLine();
        }
        vegsList.add("Quit Vegetable Section");
    }
    catch(IOException e)
    {
        System.out.println(e);
        return null;
    }
    String[] vegetableInfo = vegsList.toArray(new String[]{});
    return vegetableInfo;
}    
4

1 に答える 1

1

コードの残りの部分を確認すると役立ちますが、投稿した内容に基づいて、存在しない野菜に関する情報を取得しようとしているため、arrayOutOfBoundsException を取得していると思います。この行を実行する前に、「if」を追加して、8 が選択されたかどうかを確認してください。

String v = veg[vegSave-1];

多分試してください:

if(vegSave == 8){
    //TODO: Add code that quits vegetable section
} else {
    String v = veg[vegSave-1];
}

そうすれば、8 が選択された場合、プログラムは String v を野菜に等しく設定しようとしません。

これが役に立てば幸いです。あなたが何を望んでいるのか正確にはわかりませんでした。(たとえば、「また、野菜はこの行のような文字列ではなく配列であると想定されています。String v = veg[vegSave-1].」は質問またはステートメントでしたか?)

于 2012-12-04T02:51:57.180 に答える