2017-01-15 2 views
-2

部分的に塗りつぶされた配列を使用するプログラムを作成しようとしています。コードの始めは、配列サイズのユーザー入力を取得し、配列に配置する値を入力するようにします。次に、入力した値をソートする必要があります。部分的に塗りつぶされた配列プログラムは、初期ランタイムを終了します

public static void main(String[] args) 
{ 
    int userInput; 
    int[] userArray; 
    int numElements; 
    int index; 
    Scanner keyboard = new Scanner(System.in); 

    System.out.print("Enter number of values in array (5 to 10): "); 
    userInput = keyboard.nextInt(); 

    while (userInput < 5 || userInput > 10) 
     { 
      System.out.print("Enter number of values in array (5 to 10): "); 
      userInput = keyboard.nextInt(); 
     } 

    System.out.println(); //Space, for neatness 

    userArray = new int[userInput]; 

    for (int item: userArray) 
     System.out.print(item + " "); 

    System.out.print("\nEnter an integer value: "); 
    userInput = keyboard.nextInt(); 


     int numElements = 0; 
     int index = 0; 
     if (numElements == userArray.length - 1) 
      System.out.println("The array is full."); 
     else 
     { 
      while (index < numElements && userArray[index] < userInput) 
      { 

       if (userArray[index] != 0) //Shift the array to the right, and add value at the current index as to not overwrite values. 
       { 
        for (int i = numElements; i > index; i--) 
         userArray[i] = userArray[i - 1]; 

        userArray[index] = userInput; 
       } 

       userArray[index] = userInput; 
       index++; 
       numElements++; 

       System.out.print("Updated array: "); 
       for (int item: userArray) 
        System.out.print(item + " "); 

       System.out.println("\nEnter an integer value: "); 
       userInput = keyboard.nextInt(); 
      } 
     } 
} 

出力に問題があります。値を入力すると、プログラムは終了します。たとえば、空の配列を目的に応じて印刷します。

Enter number of values in array (5 to 10): 5 

0 0 0 0 0 
Enter an integer value: 5 

ご迷惑をおかけして申し訳ありません。

+0

完全なコードを貼り付けてください。 –

答えて

1

この部分は常に偽です!

index < numElements 

indexとnumElementsはどちらも最初は0です。したがって、あなたのwhileループはスキップされ、実行されます。

+0

本当にありがとう、どのように私はwhileループで配列を移動することができますか?要素の次の場所を見つけようとしています。これは、次の要素が追加したい要素より大きいところです。 – grant2088

0

は、このことで、あなたのコードの最後の部分を交換してください:

 int numElements = 0; 

    while (numElements < userArray.length) { 

     System.out.print("\nEnter an integer value: "); 
     userInput = keyboard.nextInt(); 
     //insert into the first column 
     userArray[0] = userInput; 

     // order the table 
      for (int i=0 ;i<=(userArray.length-2);i++) 
        for (int j=(userArray.length-1);i < j;j--) 
          if (userArray[j] < userArray[j-1]) 
          { 
            int x=userArray[j-1]; 
            userArray[j-1]=userArray[j]; 
            userArray[j]=x; 
          } 
     numElements++; 
    } 

      System.out.print("Updated array: "); 
      for (int item: userArray) 
       System.out.print(item + " "); 

      System.out.println("\nEnter an integer value: "); 
      userInput = keyboard.nextInt(); 

     System.out.println("The array is full."); 
関連する問題