0

ユーザーが終了して数字を表示するまで、ユーザーが入力した無限の数字を取得するプログラムを作成しようとしています。配列1[i]=s1

import java.util.Scanner;

パブリック クラス Program_2 {

public static void main(String[] args) {
    int a=1,i;
    Scanner sn = new Scanner(System.in);
    String[] array1= new String[a];     
    for(i=0;i<a;i++)
    {   


        System.out.println("Enter Value Number "+ (i+1));
        System.out.println("Press Q or q to Exit");
        String s1=sn.next();
        if(s1.equalsIgnoreCase("q"))
        {               
            for(i=0;i<a;i++)
            {                   
                System.out.println("Value of Number "+(i+1)+" is "+ array1[i]);

            }
            a=0;
        }
        else
        {
            array1[i]=s1;
            a=(i+2);
        }

    }

}

}

4

2 に答える 2

0

サイズarrayは1です(コードの先頭でaは1です)。iが0でarray1[0]存在するため、最初の入力は機能します。array1[1]存在しないため、2番目の入力がクラッシュします。

配列を増やす必要があります。これは、配列をより大きな配列にコピーし、コピーの結果を使用することで実行できますが、それは不器用です。

それを行うためのより良い方法ArrayListは、単純なものの代わりに使用することであり、array自動的に管理されるため、サイズを気にする必要はありません。

于 2013-01-19T06:25:08.023 に答える
0

1つは、elseステートメントに移動したときにqを押したときにのみaがインクリメントされます。したがって、forループは、数回の反復後に終了します。

また、forループの内側で0に設定して、それ以上実行されないようにします。

また、終了コードは終了しません。

于 2013-01-19T06:27:52.827 に答える