2013-02-20 113 views
1

我想創建一個程序,用戶輸入的整數從最大到最小排序。此外,我需要找到一種方法來打印最大和最小數字。當我定義了值的時候,代碼很好的排序,但是現在我已經把它切換到用戶輸入了,因爲某些原因它發回了「0」。這是我的代碼用戶輸入數組

import java.util.Scanner; 
public class SortInteger { 

     public static void main(String [] args) 
     { 
      Scanner input = new Scanner(System.in); 
      System.out.println("Please input three numbers"); 
      int num = input.nextInt(); 
      int number [] = new int [num]; //Sorting Array 
      int temp; 

      boolean correct = false; // Forces the sorting to continue till the numbers are in order 

      while(correct ==false){ 
       correct = true; 
      for(int i = 0; i>number.length-1; i++){ 

       if(number [i] > number [i+1]){ 
        temp = number [i+1]; 
        number [i+1] = number[i]; 
        number[i]= temp; 
        correct = false; 

       } 
      } 
     } 
       for(int i = 0; i<number.length-1; i++){ //outputs the array to user 
        System.out.println(number[i]); 

       } 

     } 

    } 
+1

'i> number.length-1; '應該是'我 2013-02-20 17:33:06

回答

2

已經採取了只有一個號碼

int num = input.nextInt(); 

和你正在使用它的數組大小:

 int number [] = new int [num]; 

但在代碼的其餘部分,你還沒有采取任何輸入,所以你的數組是空的。

代碼::

import java.util.*; 
class test{ 
public static void main(String [] args) 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Please input three numbers"); 
     int num1 = input.nextInt(); 
     int num2 = input.nextInt(); 
     int num3 = input.nextInt(); 
    int number [] = {num1,num2,num3}; //Sorting Array 
    int temp; 

    boolean correct = false; // Forces the sorting to continue till the numbers are in order 

    while(correct ==false){ 
     correct = true; 
    for(int i = 0; i<number.length-1; i++){ 

     if(number [i] > number [i+1]){ 
      temp = number [i+1]; 
      number [i+1] = number[i]; 
      number[i]= temp; 
      correct = false; 

     } 
    } 
} 
     for(int i = 0; i<number.length; i++){ //outputs the array to user 
      System.out.println(number[i]); 

     } 

}} 

輸出::

Please input three numbers 
1 
5 
4 
1 
4 
5 
+0

所以什麼是最好的方法來解決這個我很新的編程 – user2092325 2013-02-20 17:33:56

+0

哦,沒有循環。你只需要三個數字。 – Arpit 2013-02-20 17:34:31

+0

謝謝你的工作 – user2092325 2013-02-20 17:57:29

2

你只是初始化你的數組。你從來沒有用元素初始化你的數組,因此你的數組元素得到默認值。

 System.out.println("Please enter size"); 
     int num = input.nextInt(); 
     int number [] = new int [num]; //Sorting Array 

     for(int i=0; i<number.length; i++){ 
       System.out.println("Please enter element at index " + i); 
       number[i] = input.nextInt() 
     } 
+0

試過這個解決方案,它正確輸入輸入,但沒有按照正確的順序對它們進行排序,這看起來像是一個非常複雜的程序,只需按順序對三個數字進行排序 – user2092325 2013-02-20 17:49:50

+0

如果添加一個額外的元素,則無法正確排序。所以,如果你想要它排序三個值,如果你添加四個值,它排序三個正確 – user2092325 2013-02-20 17:51:59

1

正如有人指出,你需要填充多個值的數組,您目前只要求一個int值。

另外,你確定這有效嗎? Should't你的第一個for循環閱讀:

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

相反的:

for(int i = 0; i>number.length-1; i++) 

在一個側面說明,在我看來,你的排序算法是O(N2),你可能想看看mergesortquicksort