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

public class Hello {

    public static int s1;

    public static void main(String [] args){

            userInput();
    }

    public static void userInput() {

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

            s1 = Integer.parseInt(str1);

            if (s1 == 0)
                break;

        } while (s1 > 0);

    }
}

Я хочу найти наибольшее число из пользовательского ввода. Как сохранить предыдущие значения пользовательского ввода в do-while l oop?

Спасибо!

Ответы [ 2 ]

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

При сохранении чисел нужно быть осторожным, чтобы не потерять их. Представьте на минуту, что вы купили лотерейный билет, используя свои счастливые числа. Позднее на этой неделе, когда состоится розыгрыш, ваши счастливые числа станут победителями! Вам go нужно найти свой билет, но ... что это? Вы не можете вспомнить, куда положили? Ну что это за несколько сотен миллионов, верно?

Вы видели, где вы ошиблись? Он не запоминал числа. Он вспомнил, куда вы положили числа! Вы не хотите их терять. Итак, первое, что вам нужно сделать, это сохранить свои числа в файл, например:

String filename = "your_filename.txt";
FileWriter file = null;
BufferedWriter writer = null;

try
{
    file = new FileWriter(filename);
    writer = new BufferedWriter(file);

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

        s1 = Integer.parseInt(str1);
        writer.write(Integer.toString(str1));
        writer.newLine();

        if (s1 == 0)
            break;

    } while (s1 > 0);

    writer.close();
}
catch (IOException e)
{
    // Common practice is to ignore exceptions since they probably won't happen
}

Итак, теперь у вас есть файл для сохранения ваших чисел, но что делать, если у вас отказ жесткого диска ? Или ваш компьютер украден? Или вы загружаете вирус, играя в нелегальные зарубежные онлайн-лотереи? Вы захотите сделать резервную копию. Обычный сервис для этого - S3.

После включения библиотеки S3 для Java и инициализации клиента S3 добавьте следующий код.

String bucketName = "important-numbers";
File localNumbers = new File(filename);
s3client.putObject(bucketName, filename, localNumbers);

Поздравляем! Теперь за символическую плату (не волнуйтесь, ваш выигрыш в лотерею будет более чем покрыт), вы больше никогда не потеряете свои числа.

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

Самое простое исправление, вероятно, следующее:

public static void userInput() {

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

    // s1 = Integer.parseInt(str1); // don't save directly to this variable
    int newValue = Integer.parseInt(str1);
    if (newValue > s1) {
      s1 = newValue;
    }

    if (newValue == 0)
      break;

  } while (s1 > 0); 

}

Небольшое примечание: проверка while(s1 > 0) на самом деле ничего не делает. Поскольку у вас есть оператор break выше, вы можете упростить его до while(true)

...