Как сохранить предыдущие значения с помощью переменных в al oop? - PullRequest
0 голосов
/ 19 июня 2020
import javax.swing.JOptionPane;

public class Hello {
    public static int s1;
    public static int newvalue;

    public static void main(String[] args) {
        userInputAndPrimeNumber();
        calculate();
    }

    public static void userInputAndPrimeNumber() {
        newvalue = 0;
        do {
            String str1 = JOptionPane.showInputDialog("Enter a positive integer. Enter 0 to quit. ");
            s1 = Integer.parseInt(str1);

            if (s1 == 0)
                break;

            if (s1 > newvalue) {
                newvalue = s1;
            }
        } while (s1 > 0);
    }

    public static void calculate() {
        System.out.println("The greatest positive number is: " + newvalue);
    }
}

Я хотел бы найти наименьшее, наибольшее, среднее и количество введенных пользователем данных (без использования массивов). В приведенном выше коде я нашел способ сохранить наибольшее значение. Мне сложно вычислить оставшееся, потому что я не могу сохранить предыдущие значения, введенные пользователем. Есть ли предложения?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Здесь:

public static void userInputAndPrimeNumber() {
    int greatest = 0;
    int lowest = Integer.MAX_VALUE;
    int avgerage = 0;
    int count = 0;

    do {
        String str1 = JOptionPane.showInputDialog("Enter a positive integer. Enter 0 to quit. ");

        s1 = Integer.parseInt(str1);

        if (s1 == 0)
            break;

        if (s1 > newvalue) {
            greatest = s1;
        }

        if (s1 < lowest || lowest == Integer.MAX_VALUE) {
            lowest = s1;
        }

        count++;
        average = average + ((s1 - average) / count);

    } while (s1 > 0);
}

Чтобы увидеть, как работает среднее logi c, посетите здесь

0 голосов
/ 19 июня 2020

Сделано без редактора, поэтому заранее приносим свои извинения. Попробуйте что-то вроде этого:

public static void userInputAndPrimeNumber() {
       newvalue = 0;
        int lowest =0;
        int average =0;
        int count = 0;
       do {
           String str1 = JOptionPane.showInputDialog("Enter a positive integer. Enter 0 to quit. ");

           s1 = Integer.parseInt(str1);

            average = average + s1;

            if(count==0){
                lowest = s1;
            }

           if (s1 == 0){
           average = average / count;
               break;
            }


            if(s1<lowest)
            {
               lowest = s1; 
            }
           if (s1 > newvalue) {
               newvalue = s1;
           }
        count++;
       } while (s1 > 0);

   }

Если бы вы добавили числа в массив, по крайней мере, в c#, вы могли бы вызвать max, min и avg в массиве, что было бы более эффективно.

...