Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将排序后的整数传递到JOptionPane?_Java_Arrays_Algorithm_Sorting - Fatal编程技术网

Java 如何将排序后的整数传递到JOptionPane?

Java 如何将排序后的整数传递到JOptionPane?,java,arrays,algorithm,sorting,Java,Arrays,Algorithm,Sorting,我正在尝试编写一个应用程序,从用户输入三个整数,并显示数字的和、平均值、乘积、最小值和最大值。它还应该以升序(从最小到最大)打印这三个数字。我试图将结果返回到一个JOptionPane中,但sortResult没有返回用户输入。我可能试图过度简化排序算法,但没有正确地应用它。当前sortResult正在返回一个混乱的字符串: "Your numbers are: [l@23ab93od" 最简单的纠正方法是什么?代码如下: // Calculations using three integer

我正在尝试编写一个应用程序,从用户输入三个整数,并显示数字的和、平均值、乘积、最小值和最大值。它还应该以升序(从最小到最大)打印这三个数字。我试图将结果返回到一个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

当您将一个对象与一个字符串连接起来时,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));