1

所定の値が入力されるまで、ユーザーが配列に数値を追加できるようにしたいrandomNumber。次に、配列の中央と中央値を印刷したいと思います。

コードはユーザー入力に対して機能しますが、中間または中央値からは何も得られません0

誰でもこれで私を助けてもらえますか? これが私のコードです:

import java.util.Arrays;
import java.util.Scanner;

public class ArrayTest {
    Scanner input = new Scanner( System.in );

    int usersGuess;       
    int randomNumber = 45;

public void enterNumbers() {
    do {
        System.out.printf("Please enter numbers: ");
        usersGuess  = input.nextInt();

        if ( usersGuess != randomNumber ) {
            System.out.printf("Please enter numbers: ");
            usersGuess  = input.nextInt();
        }
        else 
              System.out.println("Correct guess");
    } 
    while ( usersGuess != randomNumber );   

    int testArray []  = new int[ 20 ];

    boolean correctGuess = false;

    for ( int i = 0; i < testArray.length; i++ ) {
        testArray[ i ] = usersGuess ;

        if ( testArray[ i ] == randomNumber ) {
            correctGuess = true;
            break;
        }
    }

    System.out.println();System.out.println( "Middle is: " + testArray
            [ ( testArray.length + 1)/2] );

    Arrays.sort( testArray );

    System.out.println( "Median is: " + testArray[ testArray.length/2] );
    System.out.println();
}


public class Test {
    public static void main( String [] args ){
        ArrayTest arrayTest = new ArrayTest();
        arrayTest.enterNumbers();
    }
}
4

2 に答える 2

2

配列を構造化する方法がわからない場合は、まだデータ構造 ArrayList を使用しないでください。ArrayList を使用しない完成版のコードを次に示します。

  • 配列は最終的なものであり、作成後に変更することはできません。したがって、この例では、推測の最大数を使用しました

お役に立てれば...

    import java.util.Arrays;
    import java.util.Scanner;

    public class ArrayTest 
    {
        Scanner input = new Scanner( System.in );

        int usersGuess;       
        int randomNumber = 45;
         int num_of_guesses = 0;

         int max_guesses = 20;


        public void enterNumbers()
        {
            int testArray []  = new int[ max_guesses ];

             do
            {


                  if ( usersGuess != randomNumber )
                {
                    System.out.printf("Please enter numbers: ");
                    usersGuess  = input.nextInt();     

                }
                else 
                      System.out.println("Correct guess");

                  testArray[ num_of_guesses ] = usersGuess;
                  num_of_guesses++;

                  if ( num_of_guesses >= max_guesses)
                {
                    System.out.println("Your all out of guesses!");
                    break;     
                } 

            } 
            while ( usersGuess != randomNumber &&  max_guesses >= num_of_guesses );

            System.out.println( "\nMiddle is: " + testArray
                    [ ( num_of_guesses)/ 2] );

            Arrays.sort( testArray, 0, num_of_guesses );


            System.out.println( "Median is: " + testArray[ ( num_of_guesses)/ 2 ] );
            System.out.println();

        }

    }

    public class Test 
    {
        public static void main( String [] args )
        {
            ArrayTest arrayTest = new ArrayTest();

            arrayTest.enterNumbers();
        }

    }
于 2012-04-29T22:37:59.590 に答える
1

ユーザーの推測を節約していません。testArray最初のdo whileループで彼らの推測を​​あなたに追加する必要があります。

これはあなたのために働くはずです:

public void enterNumbers()
{
    List<Integer> guesses = new ArrayList<Integer>();
    do  
    {   
        System.out.printf("Please enter numbers: "); 
        usersGuess  = input.nextInt();
        guesses.add(usersGuess);

        if ( usersGuess != randomNumber )
        {   
            System.out.printf("Please enter numbers: "); 

        }   
        else 
              System.out.println("Correct guess");   

    }   
    while ( usersGuess != randomNumber );

    int size = guesses.size();
    System.out.println("\nMiddle is: " + guesses.get((size + 1) / 2);

    Collections.sort(guesses);

    System.out.println("Median is: " + guesses.get(size / 2));
    System.out.println();
}
于 2012-04-29T22:06:36.467 に答える