此程序的目的是在每次输入坐标时打印出“您错过了”的消息。但是,如果输入了重复的坐标,则应该说“此坐标已经存在。”
我同时使用了两个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!");
}
}
}
答案 0 :(得分:0)
你这样做:
XValues.add(xcoord);
YValues.add(ycoord);
然后然后你检查。由于您已添加了最近输入的值,因此当您在事后检查时,数组将包含这些值。
您需要在添加之前检查。或者,您可以查看XValues.size() - 1
,但在添加更多内容之前进行检查会明确反映您的意图。
if
语句正在工作;你的程序正是按照你告诉它的方式做的。你只需要告诉它做正确的事情!
其余的逻辑一目了然。
答案 1 :(得分:0)
您已将xcoord
和ycoord
添加到for
循环之前的数组列表中,因此for
循环当然会发现它们并显示You've already picked that spot
}。您应该在for
循环后添加它们。