Java: проблема с JOptionPane.showMessageDialog - PullRequest
0 голосов
/ 03 декабря 2018

Я делаю простую программу, которая принимает входные данные для 3 целых чисел (n1, n2, n3), поэтому, например, если 3 числа были 6,12,4, оно должно вернуть:

Integers entered: 6,12,4  
Sum = 22  
Average = 7.33...  
Smallest = 4  
Largest = 12  

Этоотображается в текстовом поле с помощью JOptionPane.showMessageDialog.Код помещается в цикл, так что для каждых 3 введенных целых чисел он будет возвращать то, что показано выше.Однако, когда я запускаю программу, она показывает следующее:

Integers entered: 6,6,6  
Sum = 22  
Average = 7.33...  
Smallest = 6  
Largest = 6  

значения для n2, n3, самые маленькие и самые большие показывают значение для n1.Вот код внутри цикла, который доставляет мне проблемы:

JOptionPane.showMessageDialog(null, title);
String num1 = JOptionPane.showInputDialog("Enter 1st integer: ");
int n1 = Integer.parseInt(num1);
String num2 = JOptionPane.showInputDialog("Enter 2nd integer: ");
int n2 = Integer.parseInt(num2);
String num3 = JOptionPane.showInputDialog("Enter 3rd integer: ");
int n3 = Integer.parseInt(num3);

int sum = n1 + n2 + n3; //find sum
double avg = (double)sum/3; //find average

//find smallest integer
int smallest = n1;
if(n2 < smallest) n2 = smallest;
if(n3 < smallest) n3 = smallest;

//find largest integer
int largest = n1;
if(n2 > largest) n2 = largest;
if(n3 > largest) n3 = largest;

JOptionPane.showMessageDialog(null, "Integers entered: " + n1 + ", " + n2 + ", " + n3 
                + "\nSum = " + sum
                + "\nAverage = " + avg
                + "\nSmallest = " + smallest
                + "\nLargest = " + largest);

Как мне исправить это, чтобы n2, n3, наименьшее, наибольшее, отображало их правильные значения?

1 Ответ

0 голосов
/ 03 декабря 2018

Вы присваиваете значения smallest и largest обратно в n2 или n3, в зависимости от результата оценки ...

if(n2 < smallest) n2 = smallest;
if(n3 < smallest) n3 = smallest;

//find largest integer
int largest = n1;
if(n2 > largest) n2 = largest;
if(n3 > largest) n3 = largest;

Попробуйте что-то похожее на ...

if(n2 < smallest) smallest = n2;
if(n3 < smallest) smallest = n3;

//find largest integer
int largest = n1;
if(n2 > largest) largest = n2;
if(n3 > largest) largest = n3;
...