Java 如何在JOptionPane中允许来自用户的多个输入

Java 如何在JOptionPane中允许来自用户的多个输入,java,return-value,joptionpane,Java,Return Value,Joptionpane,在我尝试插入数组之前,代码返回年份输入的独立值,但我更希望输入一个列表,如果是闰年,则显示该列表。如果不是,就应该忽略它。我没有将数组与JOptionPane一起使用。。。事实上,我从来没有使用过数组,因为这是我使用java的第四周,所以我非常不喜欢数组。但绝对愿意接受批评和建议。我想变得更好。提前谢谢 导入javax.swing.JOptionPane 公共类SimpleMath{ public static int printLeap(int r, int k){ if((r %

在我尝试插入数组之前,代码返回年份输入的独立值,但我更希望输入一个列表,如果是闰年,则显示该列表。如果不是,就应该忽略它。我没有将数组与JOptionPane一起使用。。。事实上,我从来没有使用过数组,因为这是我使用java的第四周,所以我非常不喜欢数组。但绝对愿意接受批评和建议。我想变得更好。提前谢谢

导入javax.swing.JOptionPane

公共类SimpleMath{

public static int printLeap(int r, int k){  
    if((r % 4 == 0) && (r % 100 != 0) || (r % 400 == 0)){
    return r;
    }
    else if ((r % 4 != 0) && (r % 100 == 0) || (r % 400 != 0));
    return k;
}


public static void main(String[] args) {


    while (true) { //while the statement is true (so it continues indefinitely until the break occurs).

        String year = JOptionPane.showInputDialog("Enter input years to be tested, when done type End");
        int year[] = new year[10];
        for (int x=0; x<year.length; x++)
        if ("End".equals(year)){ //if the user types End then the loop will break. it allows a string to be input for an int value

            break;
        }   {
              int r = Integer.parseInt(year); 

 int k = 0;
int i = printLeap(r, k);
if (i == 0) {
    break; // or System.out.println("");
}
else

    System.out.println("Leap years entered are:  " + i + x);    


}
}
}
publicstaticintprintleap(intr,intk){
如果((r%4==0)和&(r%100!=0)| |(r%400==0)){
返回r;
}
如果((r%4!=0)和&(r%100==0)| |(r%400!=0));
返回k;
}
公共静态void main(字符串[]args){
while(true){//while语句为true(因此它将无限期地继续,直到中断发生)。
字符串year=JOptionPane.showInputDialog(“输入要测试的输入年份,完成后键入End”);
国际年[]=新年[10];

对于(int x=0;x,让我们从一些常规代码检查项目开始:

  • 代码的格式不好,这使得它很难阅读。修复缩进有助于使其他人可读
  • printLeap
    方法接受您调用的一个参数
    k
    。当您调用您的方法时,您会将值0传递给它,因为您已将
    k
    初始化为0,并且它从未更改。因此,这迫使我问-如果
    k
    从未更改,为什么它是一个参数
  • 您的代码中有语法错误。此行:
    int year[]=new year[10];
    错误-应将其写入
    int[]year=new int[10];
    但当这一问题得到解决时,会产生一个全新的问题,即重复变量。您声明的数组与上面的
    字符串冲突:
    String year=JOptionPane.showInputDialog(…);
  • 稍后在代码中,您将尝试将
    年份
    解析为整数,但由于
    integer.parseInt(…)
    字符串
    作为参数而不是数组,因此无法执行此操作

  • 变量名称太短,没有任何意义。在大多数情况下,使用单字符名称的变量,如
    r
    k
    i
    ,都不是一个好主意。通常,唯一可以接受使用单字符名称作为变量的时间是在
    for
    循环定义内,如:
    for(inti=0;我建议先从基础开始,然后转到GUI组件。为什么不接受一个逗号分隔的年份列表,并使用它创建一个数组呢?
    
    //Accept input from the user - a single String containing multiple years separated by commas.
    String input = JOptionPane.showInputDialog("Enter years to be tested (comma separated): ");
    //Split the String by commas and store the resulting individual years in an array
    String[] yearArray = input.split(",");
    
    //Process each year in the array
    for(String year: yearArray){
        int intYear = Integer.parseInt(year);
        System.out.println("Here's the integer value: " + intYear);
        //Do more logic here...
    }