0

スキャナーを使用して温度を入力するプログラムを作成しています。温度はいくつでも入力できます。-100 を入力すると、プログラムが停止し、登録されている最低、最高、平均、合計の温度が表示されます。私はいくつか成功しましたが、最小数、合計数、平均値を取得する方法がわかりません。しばらくここで立ち往生しています。

import java.util.Scanner;

public class Tempratureprograme {
public static void main(String[] args) {

    temperatures();

}
public static void temperatures(){
    double temperature; 
    double biggest = 0;
    double smallest = 0;
    double totalNum = 0; 
    double counter = 1;
    int numberAmount = 0;
    double average = totalNum/numberAmount;

    Scanner input = new Scanner(System.in);

    System.out.println("Please enter the temperature(s) - end the program with -100");
    System.out.print("-> ");


    do {
        temperature = input.nextDouble();
        numberAmount++;
        totalNum = totalNum + temperatur;
        System.out.print("-> ");

        if(temperature > max)
        {
            max=temperature;
            counter= 0;
        }

        if(temperature < min)
        {
            min = temperature;
        }

    }

    while (temperature != -100);
    System.out.println();
    System.out.println("Highest temperature: " + max);
    System.out.println("Lowest temperature: " + min);
    System.out.println("Average temprature: " + average); 
    System.out.println("Total registered tempratures: " + totalNum);



}
}
4

4 に答える 4

1

これを試してください。min を 0 で初期化することはできません。正の温度を一致させようとすると、常に if が失敗するためです。次のコードは機能するはずです

 public static void main(String[] args) {

    temperatures();

}
public static void temperatures(){
    int counter = 0;
    double temperature; 
    double totalNum = 0; 
    int numberAmount = 0;
    double max = - Double.MAX_VALUE;
    double min = Double.MAX_VALUE;
    double average = 0;

    Scanner input = new Scanner(System.in);

    System.out.println("Please enter the temperature(s) - end the program with -100");
    System.out.print("-> ");


    while ((temperature = input.nextDouble()) != -100) {
      //  temperature = input.nextDouble();
        counter++;
        numberAmount++;
        totalNum = totalNum + temperature;
        System.out.print("-> ");

        if(temperature > max)
        {
            max=temperature;

        }

        if(temperature < min)
        {
            min = temperature;
        }

    }

    average = totalNum/numberAmount;
    System.out.println();
    System.out.println("Highest temperature: " + max);
    System.out.println("Lowest temperature: " + min);
    System.out.println("Average temprature: " + average); 
    System.out.println("Total registered tempratures: " + counter);



}
于 2013-10-21T11:38:45.873 に答える
0

私はそれがトリックを行うべきだと思います

public static void temperatures() {
    double temperature;
    double biggest = 0;
    double smallest = 0;
    double totalNum = 0;
    double counter = 1;
    int numberAmount = 0;
    double average = totalNum / numberAmount;

    Scanner input = new Scanner(System.in);

    System.out.println("Please enter the temperature(s) - end the program with -100");
    System.out.print("-> ");

    while ((temperature = input.nextDouble()) != -100) {
        numberAmount++;
        totalNum = totalNum + temperature;
        average=totalNum/numberAmount;

        if (temperature > biggest) {
            biggest = temperature;
        }
        if (temperature < smallest) {
            smallest = temperature;
        }
        System.out.print("-> ");
    }

    System.out.println();
    System.out.println("Highest temperature: " + biggest);
    System.out.println("Lowest temperature: " + smallest);
    System.out.println("Average temprature: " + average);
    System.out.println("Total registered tempratures: " + totalNum);

}
于 2013-10-21T11:15:54.150 に答える
0

このコードをforループの前ではなく、平均を計算するループの後に配置する必要があります。

double average = totalNum/numberAmount;
于 2013-10-21T11:13:24.820 に答える