【问题标题】:JOptionPane Descending Array Program IssuesJOptionPane 降序数组程序问题
【发布时间】:2018-08-16 22:14:11
【问题描述】:

所以,在运行程序之前我没有看到任何错误。基本上它是一个数组程序,用户在其中输入 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]);
        }   
    }
}

【问题讨论】:

  • 你所说的“全部顶起”是什么意思?它具体做错了什么,应该做什么?谢谢,欢迎来到 Stack Overflow!
  • 谢谢。基本上它不会让用户输入数组的变量数。谢谢,我正在学习 Java

标签: java arrays eclipse user-interface joptionpane


【解决方案1】:

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

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

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]);
}

【讨论】:

  • 是否可以使用 JOptionPane 拥有这个数组?我正在尝试在不使用扫描仪的情况下专门创建它。但到目前为止,您的帮助非常大 *MadProgrammer
  • Scanner 输入JOptionPane - 关键是,在第一个for-loop 中,您必须提示用户输入下一个数字,而您的代码没有这样做, JOptionPane 只是混淆了这个问题(恕我直言) - 我建议,花时间理解这个例子并尝试自己修改它以使用 JOptionPane - 你将从练习中学习,然后简单地复制和粘贴其他人解决方案
猜你喜欢
  • 2019-01-24
  • 2015-11-01
  • 2019-08-10
  • 1970-01-01
  • 2022-01-05
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多