2012-04-29 3 views
1

Я хочу, чтобы пользователь мог добавлять число (а) в массив до тех пор, пока не будет введено заданное значение randomNumber. Затем я хочу напечатать середину и медиану массива.Array Issue Not Printing Middle или Median

Код работает для пользовательских входов, но я ничего не получаю от среднего или медианного, он просто говорит 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(); 
    } 
} 
+1

Этот вопрос звучит как домашнее задание. Это? –

ответ

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(); 
     } 

    } 
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(); 
}