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]);

                }

        }

    }
4

3 に答える 3

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()
         }
于 2013-02-20T17:31:10.820 に答える
2

あなたはたった1つの番号を取りました

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
于 2013-02-20T17:31:25.343 に答える
1

他の人が指摘したように、配列に複数の値を入力する必要があります。現在、要求しているのは1つのintのみです。

また、それでよろしいですか?あなたの最初のforループは読むべきではありません:

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

それ以外の:

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

ちなみに、あなたのソートアルゴリズムはO(n2)であり、マージソートとクイックソートを調べたいと思うかもしれません。

于 2013-02-20T17:40:38.390 に答える