将用户输入存储到数组java

时间:2013-10-12 23:32:47

标签: java

我知道很多次都会问这个问题,但我仍然无法解决问题。问题是我必须存储用户输入并打印出一个值。

例如,有4个人,person1,person2,person3和person4。如果我投票给person1,person1的投票数变为1,其他投票数保持为0.那么如果我投票给person2,则person2的投票数变为1,person1也是1。

我可以编译代码。但是如果我投票给person1,则输出变为4.如果我然后投票给person2,则person2的输出变为4并且对person1的投票返回到0.我是编程的完全初学者并且卡在此程序中整整4天所以非常感谢任何帮助。非常感谢你提前。

import javax.swing.*; // import swing lib for i/o
public class Arrays4
{
public static void main (String[] args)
{
    voteperson();
    voterepeat();
    System.exit(0);
} // end method main

public static int voteperson()
{
    // Initialize String Arrays
    String[] person = new String[4];
    person[0] = "person1";
    person[1] = "person2";
    person[2] = "person3";
    person[3] = "person4";

    // Initialize int Arrays
    int[] votescount = new int[4];
    votescount[0] = 0;
    votescount[1] = 0;
    votescount[2] = 0;
    votescount[3] = 0;

    // Declare String Variables
    String userinput;
    userinput = JOptionPane.showInputDialog
    ("Please tell us which painting you think is the best."+"\n"+
    "Vote 1 "+person[0]+"\n"+
    "Vote 2 "+person[1]+"\n"+
    "Vote 3 "+person[2]+"\n"+
    "Vote 4 "+person[3]);

    int answer = Integer.parseInt(userinput);

    int i;
    for (i=0; i<votescount.length; i++)
    {
        if (answer == 1)
        {
            votescount[0] = votescount[0]+1;
        }
        else if (answer == 2)
        {
            votescount[1] = votescount[1]+1;
        }
        else if (answer == 3)
        {
            votescount[2] = votescount[2]+1;
        }
        else if (answer == 4)
        {
            votescount[3] = votescount[3]+1;
        }
        else
        {

        }
    } // end for loop

    JOptionPane.showMessageDialog
    (null, "The current votes are" + "\n" +
    votescount[0] + " :" + person[0] + "\n" +
    votescount[1] + " :" + person[1] + "\n" + 
    votescount[2] + " :" + person[2] + "\n" +
    votescount[3] + " :" + person[3]);

    return 0;
}
public static void voterepeat()
{
    for (int j=1; j<=4; j++)
    {
        int repeat;
        repeat = voteperson();
        System.out.println(j);
    }
}
}

3 个答案:

答案 0 :(得分:3)

执行此操作时:

for (i=0; i<votescount.length; i++){...
} // end for loop

循环发生4次。这意味着这个位发生了4次:

if (answer == 1)
    {
        votescount[0] = votescount[0]+1;
    }

这意味着投票数增加了4个!

答案 1 :(得分:0)

首先,

int[] votescount = new int[4];

然后,你做

for (i=0; i<votescount.length; i++)
    {
}

因此,该循环迭代4次。 在循环中,你做,

if (answer == 1)
    {
        votescount[0] = votescount[0]+1;
    }

这就是为什么,你的数量增加了4!

答案 2 :(得分:0)

摆脱你的for循环:

for (i=0; i<votescount.length; i++)

使人和投票人数全球化和静态化。

这是更新的代码:

import javax.swing.*; // import swing lib for i/o
public class Arrays4
{
     static String[] person = new String[4];//these have been made global and static
     static int[] votescount = new int[4];
    public static void main (String[] args)
    {
        // Initialize String Arrays
        person[0] = "person1";//these have been moved so that it is only called once
        person[1] = "person2";
        person[2] = "person3";
        person[3] = "person4";
        // Initialize int Arrays

        votescount[0] = 0;
        votescount[1] = 0;
        votescount[2] = 0;
        votescount[3] = 0;


        voteperson();
        voterepeat();
        System.exit(0);
    } // end method main

    public static int voteperson()
    {
        // Declare String Variables
        String userinput;
        userinput = JOptionPane.showInputDialog
        ("Please tell us which painting you think is the best."+"\n"+
        "Vote 1 "+person[0]+"\n"+
        "Vote 2 "+person[1]+"\n"+
        "Vote 3 "+person[2]+"\n"+
        "Vote 4 "+person[3]);

        int answer = Integer.parseInt(userinput);
        System.out.println(answer);
        int i;


            if (answer == 1)
            {
                votescount[0] = votescount[0]+1;
            }
            else if (answer == 2)
            {
                votescount[1] = votescount[1]+1;
            }
            else if (answer == 3)
            {
                votescount[2] = votescount[2]+1;
            }
            else if (answer == 4)
            {
                votescount[3] = votescount[3]+1;
            }
            else
            {

            }


        JOptionPane.showMessageDialog
        (null, "The current votes are" + "\n" +
        votescount[0] + " :" + person[0] + "\n" +
        votescount[1] + " :" + person[1] + "\n" + 
        votescount[2] + " :" + person[2] + "\n" +
        votescount[3] + " :" + person[3]);

        return 0;
    }
    public static void voterepeat()
    {
        for (int j=1; j<=4; j++)
        {
            int repeat;
            repeat = voteperson();
            System.out.println(j);
        }
    }
}