Arraylist不会在java中添加用户输入

时间:2015-03-31 01:04:21

标签: java arraylist

此程序的目的是在每次输入坐标时打印出“您错过了”的消息。但是,如果输入了重复的坐标,则应该说“此坐标已经存在。”

我同时使用了两个arraylists,以独立存储x和yI的值,无法理解我的代码有什么问题.if语句似乎根本不起作用,而且userinput似乎也没有被添加到arraylists。

Scanner a=new Scanner(System.in);

//Arraylist stores all entered x values.
ArrayList<Integer> XValues=new ArrayList<Integer>();
//Arraylist stores all entered y values.
ArrayList<Integer> YValues=new ArrayList<Integer>();

int Nooftries=0;
int xcoord;
int ycoord;

for(int i=0;i<10;i++)
{
    Nooftries++;
    System.out.println("This is guess #"+Nooftries);

    System.out.print("Please input your x location (0-3) : ");
    xcoord=a.nextInt();
    System.out.print("Please input your y location (0-3) : ");
    ycoord=a.nextInt();

    XValues.add(xcoord);
    YValues.add(ycoord);


    for(int c=0;c<XValues.size();c++)
    {

        if(xcoord==XValues.get(c) && ycoord==YValues.get(c))
        {

            System.out.println("You've already picked that spot.\n");
            break;
        }
        else
        {
            System.out.println("You missed!");
        }
    }
}

2 个答案:

答案 0 :(得分:0)

你这样做:

XValues.add(xcoord);
YValues.add(ycoord);

然后然后你检查。由于您已添加了最近输入的值,因此当您在事后检查时,数组将包含这些值。

您需要在添加之前检查。或者,您可以查看XValues.size() - 1,但在添加更多内容之前进行检查会明确反映您的意图。

if语句正在工作;你的程序正是按照你告诉它的方式做的。你只需要告诉它做正确的事情!

其余的逻辑一目了然。

答案 1 :(得分:0)

您已将xcoordycoord添加到for循环之前的数组列表中,因此for循环当然会发现它们并显示You've already picked that spot }。您应该在for循环后添加它们。