Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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/2/joomla/2.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_Swing_Loops_If Statement - Fatal编程技术网

Java JOptionPane循环

Java JOptionPane循环,java,swing,loops,if-statement,Java,Swing,Loops,If Statement,我有个问题。我的讲师想让我做一个循环,输入JOptionPane,输出console。如何使用loop for JOptionPane并通过控制台发送输出 这是我的密码: int even = 0; int odd = 0; int e_e = 0; int o_o = 0; String a1 = JOptionPane.showInputDialog(null, "Type in 10 integer"); for (int counter = 0; counter < 10; c

我有个问题。我的讲师想让我做一个循环,输入JOptionPane,输出console。如何使用loop for JOptionPane并通过控制台发送输出

这是我的密码:

int even = 0;
int odd = 0;
int e_e = 0;
int o_o = 0;

String a1 = JOptionPane.showInputDialog(null, "Type in 10 integer");

for (int counter = 0; counter < 10; counter++){
    int a = Integer.parseInt(a1);

    if (a % 2 == 0) {
        even++;
        e_e += a;
    } else {
        odd++;
        o_o += a;
    }
}

System.out.println("\n\nNumber of even numbers : " + even);
System.out.println("Number of odd numbers : " + odd);
System.out.println("Total of even numbers : " + e_e);
System.out.println("Total of odd numbers : " + o_o);

当前代码的问题在于,您只要求用户输入一次数字,但实际上您似乎想要10个值。所以你解析了十次相同的值

解决方案很简单,将对话框放在循环中只更改带有注释的行:

int even = 0;
int odd = 0;
int e_e = 0;
int o_o = 0;

// No return type, just a message
JOptionPane.showMessageDialog(null, "Type in 10 integer");

for (int counter = 0; counter < 10; counter++) {
    // Dialog inside the loop, asking to
    // input a number in every iteration
    String value = JOptionPane.showInputDialog(null, "Type in "
        + (counter + 1) + ". value");
    int a = Integer.parseInt(value);

    if (a % 2 == 0) {
        even++;
        e_e += a;
    } else {
        odd++;
        o_o += a;
    }
}

System.out.println("\n\nNumber of even numbers : " + even);
System.out.println("Number of odd numbers : " + odd);
System.out.println("Total of even numbers : " + e_e);
System.out.println("Total of odd numbers : " + o_o);
我会尝试使用带和int[]的DO-WHILE循环,例如:

int size = 10;
int count = 0;

int[] yourNumbers = new int[size];

do {
    yourNumbers[count] = Integer.parseInt(JOptionPane.showInputDialog(null,
        "Your message here."));

    count++;
} while (count < 10);
通过这种方式,您可以循环并获取所有数字。然后,您可以使用FOR-LOOP循环并打印所需内容

System.out.println("Even Numbers are: ");

for(int i = 0; i < yourNumbers.length; i++) {
    if (yourNumbers[i] % 2 == 0) {
        System.out.println(yourNumbers[i]);
    } 
}

System.out.println("Odd Numbers are: ");

for(int i = 0; i < yourNumbers.length; i++) {
    if (yourNumbers[i] % 2 != 0) {
        System.out.println(yourNumbers[i]);
    } 
}

好吧,只要把你对JOptionPane的呼叫放在一个循环中。。。你的程序应该做什么?然后我们可以给你一个关于如何改变你的特定程序的明确建议。如果用户回答了你的问题,请也接受他的回答。如果没有,请说明还有什么问题没有回答,这是StackOverflow的一个非常重要的部分,非常感谢。我不认为首先收集所有值,然后再次迭代以处理它们有什么好处。但是,是的,也有用。当然很高兴知道如何在数组中存储值。谢谢。非常感谢。