我正在尝试编写一个从用户输入三个整数的应用程序,并显示数字的总和,平均值,乘积,最小值和最大值。它还应该按升序打印三个数字(从最小到最大)。我试图将结果返回到一个JOptionPane但sortResult没有返回用户输入。我可能试图过度简化排序算法,但我没有正确应用它。目前sortResult返回一个混乱的字符串:
"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
答案 0 :(得分:1)
当您将对象与String连接时,Java会使用其toString
方法自动转换为字符串。数组类型不会覆盖toString
方法,因此当使用toString
时,它将使用Object
的{{1}}方法,该方法只返回类型object(toString
是整数数组的类型)[l
其哈希码为十六进制。
要获取表示数组包含内容的String,请使用@
,(在本例中为Arrays.toString(arrayName)
)。
此外,既然你知道你的数组包含三个元素,你也可以使用像"Your numbers are: " + Arrays.toString(sortResult) + ...
这样的东西,如果你希望它们的格式与sortResults[0] + ", " + sortResults[1] + ", " + sortResults[2]
返回的格式不同(如果你不知道元素的数量,或者有太多的元素一个一个地输入它们,你将不得不遍历它们。)
答案 1 :(得分:1)
您可以使用Arrays.toString(array)
或其他可以做的好事就是使用收集框架
我在这里给你一个例子
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);
通过使用java提供的集合,您可以轻松地进行排序,查找max,min等。
// 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));