Java 如何将排序后的整数传递到JOptionPane?
我正在尝试编写一个应用程序,从用户输入三个整数,并显示数字的和、平均值、乘积、最小值和最大值。它还应该以升序(从最小到最大)打印这三个数字。我试图将结果返回到一个JOptionPane中,但sortResult没有返回用户输入。我可能试图过度简化排序算法,但没有正确地应用它。当前sortResult正在返回一个混乱的字符串:Java 如何将排序后的整数传递到JOptionPane?,java,arrays,algorithm,sorting,Java,Arrays,Algorithm,Sorting,我正在尝试编写一个应用程序,从用户输入三个整数,并显示数字的和、平均值、乘积、最小值和最大值。它还应该以升序(从最小到最大)打印这三个数字。我试图将结果返回到一个JOptionPane中,但sortResult没有返回用户输入。我可能试图过度简化排序算法,但没有正确地应用它。当前sortResult正在返回一个混乱的字符串: "Your numbers are: [l@23ab93od" 最简单的纠正方法是什么?代码如下: // Calculations using three integer
"Your numbers are: [l@23ab93od"
最简单的纠正方法是什么?代码如下:
// Calculations using three integers.
import java.util.Arrays;
import javax.swing.JOptionPane;
public class Calculations {
public static void main( String args[] ){
int x;// first number
int y;// second number
int z;// third number
int sumResult;// sum of numbers
int avgResult;// average of numbers
int prodResult;// product of numbers
int maxResult;// max of numbers
int minResult;// min of numbers
String xVal;// first string input by user
String yVal;// second string input by user
String zVal;// third string input by user
xVal = JOptionPane.showInputDialog("Enter first integer:");// prompt
yVal = JOptionPane.showInputDialog("Enter second integer:");// prompt
zVal = JOptionPane.showInputDialog("Enter third integer:");// prompt
x = Integer.parseInt( xVal );
y = Integer.parseInt( yVal );
z = Integer.parseInt( zVal );
sumResult = x + y + z;
avgResult = sumResult/3;
prodResult = x * y * z;
maxResult = Math.max(x, Math.max(y, z));
minResult = Math.min(x, Math.min(y, z));
int[] sortResult = {x, y, z};
Arrays.sort(sortResult);
String result;
result = "Your numbers are: " + sortResult +
"\n" + "The sum is " + sumResult +
"\n" + "The average is " + avgResult +
"\n" + "The product is " + prodResult +
"\n" + "The max is " + maxResult +
"\n" + "The min is " + minResult;
JOptionPane.showMessageDialog(null, result, "Results", JOptionPane.INFORMATION_MESSAGE );
System.exit(0);
}// end method main
}// end class Product
当您将一个对象与一个字符串连接起来时,Java会使用其
toString
方法自动转换为字符串。数组类型不会覆盖toString
方法,因此当对其使用toString
时,它将使用Object
的toString
方法,该方法只返回对象的类型([l
是int数组的类型)@
其十六进制哈希代码
要获取表示数组所包含内容的字符串,请使用Arrays.toString(arrayName)
,(在本例中“您的数字是:“+Arrays.toString(sortResult)+…”
)
此外,由于您知道数组包含三个元素,如果您希望它们的格式与
数组返回的格式不同,您也可以使用类似sortResults[0]+“,“+sortResults[1]+”,“+sortResults[2]
”的格式(如果您不知道元素的数量,或者元素太多而无法逐个键入,则必须对它们进行循环)。您可以使用数组。toString(数组)
或者您可以做的另一件好事是使用集合框架。
这里我给你举个例子
ArrayList<Integer> al = new ArrayList<>();
// to add three element or to do any common thing for any number of elements.
for(int i = 0; i < 3; i++)
al.add(JOptionPane.showInputDialog("Enter " + i + "th number:"));
System.out.println(al);
使用Arrays.toString(sortResult)
打印数组。
// finding minimum of all elements
Integer min = al.stream().min((Integer a, Integer b) -> a.compareTo(b));
// finding maximum of all elements
Integer max = al.stream().max((Integer a, Integer b) -> a.compareTo(b));
// sorting all elements
al.sort((Integer a, Integer b) -> a.compareTo(b));