2017-10-17 1 views
-1

J'ai créé un programme utilisant précédemment la méthode BubbleSort qui fonctionne pour trier des nombres dans une liste qui existe déjà, mais j'ai du mal à essayer de manipuler ce programme afin de permettre un utilisateur pour entrer la liste des numéros à trier à la place. Jusqu'à présent, j'ai:Modification du programme Bubblesort avec l'entrée utilisateur

import java.util.Scanner; 

public class MedianValue { 

public static void main(String[] args) { 

    //use scanner to input list of numbers to sort 

    Scanner scan = new Scanner(System.in); 

    int[] numbers = new int[] {scan.nextInt()}; 


    //nested for loop 
    //outer loop just iterating 
     //inner loop going through and flipping 
      //checking if out of order (if statement) 


    int counter = 0; 

    //outer loop: keep doing this until it's sorted 

    for(int i = 0; i < numbers.length - 1; i = i + 1) 

    //put in a inner loop number.length times minus one because we don't want to swap the last element 

     for(counter = 0; counter < numbers.length - 1; counter = counter + 1) 
     { 



      if (numbers [counter] > numbers [counter + 1]) 
      { 


       int temporary = numbers [counter]; 
       numbers [counter] = numbers [counter + 1]; 
       numbers [counter + 1] = temporary; 
      } 
     } 


     for(int i =0; i < numbers.length; i = i + 1) 
     { 
      System.out.print(numbers[i] + " "); 
     } 
    } 

} 

Mais, dans ce programme, au lieu de trier les numéros entrés, le programme affiche simplement le premier numéro qui est entré par l'utilisateur. Je ne suis pas sûr si je dois déplacer où ma fonction de scanner est placée, ou ajouter dessus dans la boucle pour trier tous les nombres comme je le veux faire. Je suis perdu sur où changer le programme si c'est le cas.

Répondre

0

C'est parce que int[] numbers = new int[] {scan.nextInt()}; est un seul contrat. scan lit une seule entrée et affecte le numéro [0].

Vous devez réellement modifier votre code pour scan à lire n numéros et stocker dans n -sized numbers.

quelque chose comme.

int[] numbers = new int[scan.nextInt()]; 
for(int i = 0; i < numbers.length; i++) 
    numbers[i] = scan.nextInt(); 
0

Le code int[] numbers = new int[] {scan.nextInt()}; crée toujours un tableau (pas une liste) de taille 1.

Habituellement, dans ce genre de missions que vous obtenez n + 1 numéros, par exemple 5 3 6 2 4 1 signifierait « Je vais vous donner cinq Oh, ils sont là: 3 6 2 4 et 1! "

Vous voulez probablement quelque chose comme int[] numbers = new int[scan.nextInt()]; - puis boucle de 0 à numbers.length pour remplir le tableau.