2013-02-20 2 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; 'i

답변

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

+0

no loop입니다. 당신은 세 개의 숫자 만 필요합니다. – Arpit

+0

고마워요. – user2092325

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

+0

추가 요소를 추가하면 올바르게 정렬되지 않습니다. 그래서 네 값을 더하면 3 개의 값을 정렬하길 원한다면 3을 정확히 정렬 할 것입니다. – user2092325

1

가, 현재는 하나의 INT를 요청하고 있습니다.

또한 작동하는지 확인 하시겠습니까? 첫 번째 for 루프 읽고 Should't 대신의

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

: 보조 노트에

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

를, 당신의 정렬 알고리즘은 당신이 조사 할 수 있습니다 O (N2) 인 것을 나에게 보인다 mergesortquicksort.