检查arraylist中的两个连续坐标对是否在java中相等

时间:2015-03-25 04:07:33

标签: java arraylist

以下程序应执行10次,每次询问用户一对坐标。我将x和y坐标存储在两个单独的arraylists中。 程序应该能够检查是否多次输入了一对坐标。如果发生这种情况,应该打印一条消息。 我的节目表现得很奇特。在其他方面,它似乎多次打印出来。

其次,如果用户输入一对坐标,我希望程序打印出一个msg,说错了对。我尝试在if之后插入一个else语句,但是没有'简而言之,每次输入一对时,程序都应该说“错误的配对”,但是如果输入了一个副本,它应该只是说“已经输入了”#。如何我这样做?

public static void main(String[]args)
{
    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>();

    for(int i=0;i<10;i++)
    {
        int xval;
        int yval;

        System.out.println("Try no. #"+(i+1));
        System.out.print("Please enter x coordinate: ");
        xval=a.nextInt();
        System.out.print("Please enter y coordinate: ");
        yval=a.nextInt();

        if(i>1)
        {
            for(int c=0;c<XValues.size();c++)
            {
                for(int d=0;d<YValues.size();d++)
                {
                    XValues.get(c);
                    YValues.get(d);

                    if(xval==XValues.get(c) && yval==YValues.get(d))
                    {
                        System.out.println("Sorry.Already entered.\n");
                    }
                }
            }
        }

        XValues.add(xval);
        YValues.add(yval);
    }
}

1 个答案:

答案 0 :(得分:1)

注意你的嵌套for循环?检查以前条目的值的部分运行的次数比您希望的运行次数多。

例如,当i = 3时,用户输入他们的第4个条目,您将要对照前3个条目进行检查。你的for(int d=0;d<YValues.size();d++)会运行三次,但由于它位于for(int c=0;c<XValues.size();c++)循环内,整个循环将运行3次,总共运行9次。

删除行for(int c=0;c<XValues.size();c++)和相应的括号。在if(xval==XValues.get(c) && yval==YValues.get(d))行中,对{2}坐标使用get(d)

此外,您当前正在检查i>1,当您真正想要开始检查i>0时。

修改后的代码应如下所示:

public static void main(String[]args)
{
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>();

for(int i=0;i<10;i++)
{
    int xval;
    int yval;

    System.out.println("Try no. #"+(i+1));
    System.out.print("Please enter x coordinate: ");
    xval=a.nextInt();
    System.out.print("Please enter y coordinate: ");
    yval=a.nextInt();

    if(i>0)
    {

        for(int d=0;d<YValues.size();d++)
        {
            if(xval==XValues.get(d) && yval==YValues.get(d))
            {
                System.out.println("Sorry.Already entered.\n");
                break;
            }
        }

    }

    XValues.add(xval);
    YValues.add(yval);
}

}