3

ユーザーに3つの数字の入力を求めるコードを書き込もうとしていますが、プログラムはどの数字が最大かを示すことになっています。ifステートメントとelseifステートメントで大量の「System.out.print」を実行したくありませんでした。デバッガによるエラーは、「greatest」と「greatest1」が初期化されていないことです。

import java.util.Scanner;

public class number1
{

    public static void main(String[] args)
    {

        double a, b, c;
        double greatest, greatest1;

        Scanner keyboard = new Scanner(System.in);
        System.out.print("Enter one number :");
        a  = keyboard.nextDouble();
        System.out.print("Enter another number :"); 
        b  = keyboard.nextDouble();
        System.out.print("Enter a third number :");
        c  = keyboard.nextDouble();

        if(a > b && a > c) {
            greatest = a;
        } //end of if statement

        else if(b > a && b > c){   
            greatest = b;
        }

        else if(c > a && c > b) { 
            greatest = c;
        }
        else if(a==b && c < a) {
            greatest = a;
            greatest1 = b;

        }

        else if(a==c && b < a) {
            greatest = a;
            greatest1 = c;
        }

        else if(b==c && a < b) {
            greatest = b;
            greatest1 = c;
        }

        else {
            System.out.print("All of the numbers are greatest");
        }
        System.out.print("The greatest number is: " +greatest+ "and" +greatest1);
    }
} 
4

5 に答える 5

4

それ以来、他の人たちはすでに問題を指摘しています。私はあなたがただすることによって3つの数の中から最大の数を見つけることができることを指摘するつもりです:

biggest = Math.max(a, Math.max(b,c));

コード内のすべての条件を置き換えることができます。

整数のセット(たとえば、 intの配列)の最大値が必要だと想像してください。あなたは次のようなことをすることができます:

biggest = array[0]; // initialize max to the first number of the set

セットを繰り返し、最大値を確認します。

for(int i = 1; i < array.size; i++) 
   biggest = Math.max(biggest,array[i]);

またはJavaストリームの場合:

Arrays.stream(array).max().getAsDouble()

独自のmax関数を作成することもできます。この場合、次のことができます。

public double maxDouble (double a, double b){
       if(a > b) return a;
       else return b;
}

ここでは、Mathクラスとそのメソッド( public static double max(double a、double b)など)に関する詳細情報を読むことができます。

于 2013-02-14T03:50:34.437 に答える
3

greatestこれを修正するにgreatest1は、必ず値に割り当てられていることを確認する必要があります。このコードブロックに入った場合はどうなりますか?

if (a > b && a > c) {
    greatest = a;
} //end of if statement

greatest1割り当てられないので、最後のステートメントでそれを印刷したときに

System.out.print("The greatest number is: " + greatest + "and" + greatest1);

それはあなたにエラーを与えています。

于 2013-02-14T03:45:14.937 に答える
1

別のヒント:enter各番号を入力した後にを押す場合は、各番号を読んだ後に改行を読む必要があります\n

例えば

a  = keyboard.nextDouble();

に変更する必要があります

a  = keyboard.nextDouble();
keyboard.nextLine();

于 2013-02-14T03:53:45.730 に答える
1

キーボードから入力を取得し、二重配列を作成してから、以下のコードを試してください。

double dblArray[] = {24.0,40.2,38.9};
Arrays.sort(dblArray);

System.out.print("The greatest number is: " +dblArray[dblArray.length-1]+ " and " +dblArray[dblArray.length-2]);

n個の最大数を印刷できます。

于 2013-02-14T04:10:29.440 に答える
0

一般的なヒントとして:0で初期化:

double greatest = 0;
double greatest1 = 0;

ただし、注意してください。あなたの場合、これはコードロジックのエラーを示しています。そのロジックを修正してください。そうしないと、結果が0になり、間違っている可能性があります。

于 2013-02-14T03:45:21.573 に答える