JOptionPane降序数组程序问题

时间:2018-08-16 22:14:12

标签: java arrays eclipse user-interface joptionpane

因此,在运行该程序之前,我看不到任何错误。基本上,这是一个数组程序,用户可以在其中输入10个数字。一旦用户输入了数组的数量,它便会弹出一个GUI,提示您输入一个10的数组。它只能让您输入一次,并且只重复用户输入10次的相同数字。这一切都被抬高了,我只做了几个星期而轮班12小时,这无济于事。如果有人能指出我正确的方向,那就太好了!

package Array;
import javax.swing.JOptionPane;
public class Array {
    public static void main(String[] args) {
        String response;
        response = JOptionPane.showInputDialog("Enter the numbers : ");
        int n = Integer.parseInt(response);
        int[] a=new int[n];
        int i,j,temp=0;
        JOptionPane.showInputDialog("Enter "+n+" Array Elements : ");
        for(i=0;i<n;i++){
            a[i]=Integer.parseInt(response);
        }
        JOptionPane.showMessageDialog(null,"\nArray Elements Are : ");
        for(i=0;i<n;i++) {
            JOptionPane.showMessageDialog(null,"  "+a[i]);
        }
        for(i=0;i<n;i++) {
            for(j=i+1;j<n;j++) {
                if(a[i]<a[j]) {
                    temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;          
                }
            }
        }
        JOptionPane.showMessageDialog(null,"\nArray Elements in Descending Order : ");
        for(i=0;i<n;i++) {
            JOptionPane.showMessageDialog(null,"   "+a[i]);
        }   
    }
}

1 个答案:

答案 0 :(得分:0)

核心问题是,您只是不要求用户为数组中的每个元素输入值,而只是解析最后一个response,即数组中元素的数量。

我剥离了您的解决方案并删除了JOptionPane,因为它可能不是解决当前问题的最佳解决方案。但是,用Scanner代替JOptionPane并不需要花费太多,因为它们通常在做相同的事情

Scanner input = new Scanner(System.in);
System.out.print("Number of elements: ");
String response = input.nextLine();
int numberOfElements = Integer.parseInt(response);
int[] values = new int[numberOfElements];

for (int index = 0; index < numberOfElements; index++) {
    System.out.print("Element " + index + ": ");
    response = input.nextLine();
    int value = Integer.parseInt(response);
    values[index] = value;
}
for (int i = 0; i < numberOfElements; i++) {
    for (int j = i + 1; j < numberOfElements; j++) {
        if (values[i] < values[j]) {
            int temp = values[i];
            values[i] = values[j];
            values[j] = temp;
        }
    }
}

System.out.println("Sorted:");
for (int index = 0; index < numberOfElements; index++) {
    System.out.println(values[index]);
}