是的,在我来这里之前,我确实做过研究(包括这个网站,MSDN和其他一些),但没有一个真正帮助我(刚刚开始编码),我仍然不明白。我正在尝试制作一个 java 程序,该程序将您输入的 3 个整数从大到小放入。我遇到的麻烦是,无论哪个数字最高,它只会在控制台中显示该数字并摆脱其他数字。任何人都可以就我做错了什么提供任何启示或提供任何建议吗?我将不胜感激。
这是我的代码
import javax.swing.*;
public class sortingintegers {
public static void main(String[] args) {
// TODO Auto-generated method stub
String variable1, variable5;
int variable2, variable3, variable4;
variable1 = JOptionPane.showInputDialog(null, "Enter the first integer? ",
"Exercise3_8", JOptionPane.QUESTION_MESSAGE);
variable2 = Integer.parseInt(variable1);
variable1 = JOptionPane.showInputDialog(null, "Enter the second integer? ",
"Exercise3_8", JOptionPane.QUESTION_MESSAGE);
variable3 = Integer.parseInt(variable1);
variable1 = JOptionPane.showInputDialog(null, "Enter the third integer? ",
"Exercise3_8", JOptionPane.QUESTION_MESSAGE);
variable4 = Integer.parseInt(variable1);
//First Phase
if (variable2> variable3 && variable2> variable4) {
System.out.println(variable2);
}
else if (variable3> variable2 && variable3> variable4) {
System.out.println(variable3);
}
else if (variable4> variable2 && variable4> variable3) {
System.out.println(variable4);
}
//Second Phase
if (variable2> variable3 && variable2> variable4) {
System.out.println(variable2);
}
else if (variable3> variable2 && variable3> variable4) {
System.out.println(variable3);
}
else if (variable4> variable2 && variable4> variable3) {
System.out.println(variable4);
}
//Third Phase
if (variable2> variable3 && variable2> variable4) {
System.out.println(variable2);
}
else if (variable3> variable2 && variable3> variable4) {
System.out.println(variable3);
}
else if (variable4> variable2 && variable4> variable3) {
System.out.println(variable4);
}
}
}
只需将数字存储为数组或列表(每当您想调用 var1、var2、var3 等时,请问问自己使用数组是否正确),然后对它们进行排序。
int[] nums = new int[3];
for (int i = 0; i < nums.length; i++) {
nums[i] = JOptionPane.showInputDialog(null, "Enter integer " + i,
"Exercise3_8", JOptionPane.QUESTION_MESSAGE);
}
Arrays.sort(nums);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
作为初学者,我相信你还没有了解数组或排序算法。 您正在查找第一个数字的正确轨道上,但是您需要使用嵌套的 if 语句来查找第二个和第三个数字。
因此,让我们以您的第一个if语句为例:
if (variable2> variable3 && variable2> variable4) {
System.out.println(variable2);
//Inside here, you know that variable 2 is first. So is variable3 or variable4 second?
}
要确定哪个变量是第二个变量,请使用将变量 3 与变量 4 进行比较的 if 语句。 在该 if 语句中,您知道哪个变量是第二个变量,然后哪个变量是第三个变量,因为只剩下一个变量了。
完成变量 2 在第一个的情况后,以类似的方式处理变量 3 在前,变量 4 在前的情况。
感谢所有帮助过我的人,尝试制作一个数组,但我仍然需要努力。这就是我最终所做的,它奏效了。
import javax.swing.JOptionPane;
public class sortingintegers {
private static char[] var1;
public static void main(String[] args) {
// TODO Auto-generated method stub
String integer1 = JOptionPane.showInputDialog("Enter the first integer:");
String integer2 = JOptionPane.showInputDialog("Enter the second integer:");
String integer3 = JOptionPane.showInputDialog("Enter the third integer:");
int num1 = Integer.parseInt(integer1);
int num2 = Integer.parseInt(integer2);
int num3 = Integer.parseInt(integer3);
if (num1 >= num2 && num1 >= num3 && num2 >= num3){
String var1 =(" The sorted numbers are "+ num3+ " "+ num2+ " " +num1);
JOptionPane.showConfirmDialog(null, var1);
System.out.print(var1);
}
if (num1 >= num3 && num3 >= num2 && num1 >= num2){
String var2 =(" The sorted numbers are "+ num2+ " "+ num3+ " " +num1);
JOptionPane.showConfirmDialog(null, var2);
System.out.print(var2);
}
if (num2 >= num3 && num2 >= num1 && num3 >= num1){
String var3 =(" The sorted numbers are "+ num1+ " "+ num3+ " " +num2);
JOptionPane.showConfirmDialog(null, var3);
System.out.print(var3);
}
if (num2 >= num1 && num2>= num3 && num1 >= num3){
String var4 =(" The sorted numbers are "+ num3+ " "+ num1+ " " +num2);
JOptionPane.showConfirmDialog(null, var4);
System.out.print(var4);
}
if (num3 >= num1 && num3 >= num2 && num1 >= num2){
String var5 =(" The sorted numbers are "+ num2+ " "+ num1+ " " +num3);
JOptionPane.showConfirmDialog(null, var5);
System.out.println(var5);
}
if (num3 >= num2 && num3 >= num1 && num2 >= num1){
String var6 =(" The sorted numbers are "+ num1+ " "+ num2+ " " +num3);
JOptionPane.showMessageDialog(null, var6);
System.out.print(var6);
}
}
}