Java 使用数组比较有序对并确定数学系统

Java 使用数组比较有序对并确定数学系统,java,Java,我正在写一个程序,该程序接受有序对,并确定它们是否是自反的、对称的和传递的。。。 考虑到这些要点:(1,1)(1,2)(2,2)(4,4)(2,1)(3,3) 反身:所有这些都存在:(1,1)(2,2)(3,3)(4,4) 对称:如果(a,b)存在,则(b,a)存在 及物:如果(a,b)和(b,c)存在,那么(a,c)也必须存在。。。 我遇到了一些问题,因为我开始使用链表,但决定数组会更容易。我被告知使用Point[]软件包,它比并行阵列更容易。。。这就是我所拥有的,我不确定它是否正确??我甚至

我正在写一个程序,该程序接受有序对,并确定它们是否是自反的、对称的和传递的。。。 考虑到这些要点:(1,1)(1,2)(2,2)(4,4)(2,1)(3,3) 反身:所有这些都存在:(1,1)(2,2)(3,3)(4,4) 对称:如果(a,b)存在,则(b,a)存在 及物:如果(a,b)和(b,c)存在,那么(a,c)也必须存在。。。 我遇到了一些问题,因为我开始使用链表,但决定数组会更容易。我被告知使用Point[]软件包,它比并行阵列更容易。。。这就是我所拥有的,我不确定它是否正确??我甚至无法将数字存储到我的数组中!!请帮忙

/****************************************************************
* Name: Cheryl Minor        Date: March 8, 2011
*
* Program: Write a program that checks whether a relation R
*   is an equivalence relation. If R is an equivalence relation
*   the program outputs the equivalence classes of R.
****************************************************************/
import java.io.*;
import java.util.*;

public class Problem17 
{
static class Point{
    int x;
    int y;
}
public static void main(String []args)
{
    Point[] line = new Point[6];
    for(int i = 0; i<line.length; i++)
    {
        line[i] = new Point();
    }

    line[0].x = 1;
    line[1].x = 1;
    line[2].x = 2;
    line[3].x = 4;
    line[4].x = 2;
    line[5].x = 3;

    line[0].y = 1;
    line[1].y = 2;
    line[2].y = 2;
    line[3].y = 4;
    line[4].y = 1;
    line[5].y = 3;  

    System.out.println(line);   
   }
}
/****************************************************************
*姓名:Cheryl Minor日期:2011年3月8日
*
*程序:编写一个程序,检查关系
*是一种等价关系。如果R是等价关系
*程序输出R的等价类。
****************************************************************/
导入java.io.*;
导入java.util.*;
公共类问题17
{
静态类点{
int x;
int-y;
}
公共静态void main(字符串[]args)
{
点[]线=新点[6];

对于(int i=0;i您可以编写如下内容。此算法可以改进,但现在更具可读性:

Point[] list = new Point[5];
...
for (int i=0; i<list.length; i++) {
    // checking Reflexive
    if (list[i].x == list[i].y) System.out.println("Reflexive" + list[i]);
    for (int j=i+1; j<list.length; j++) {
        // checking Symmetric
        if (list[i].x == list[j].y && list[i].y == list[j].x) ...
        for (int k=j+1; k<list.length; k++) {
            // checking Transitive
            if (list[i].x == list[k].x && list[i].y == list[j].x && ...
        }
    }
}
点[]列表=新点[5];
...

对于(inti=0;i所有计算机程序都有一个通用的解决方案(又名:金弹):divide et impera(由罗马人发明)

逐步解决你的问题

…一个采用有序对的程序…给定以下几点:(1,1)(1,2)(2,2)(4,4)(2,1)(3,3)


我这里有一个第一个不和谐:)

你最好给点类(1)一个取x和y值的构造函数,和(2)访问器,这样您的代码就可以在一个点内获得x和y值。除此之外,您发布的代码中没有任何内容甚至开始尝试解决您设置的问题;您至少应该尝试一下,堆栈溢出不会帮您做功课。我真的不想让它告诉我如何执行所有for循环诸如此类,我只是想确保我的point类写得正确…所以我有这个..System.out.println(“它是自反的吗?”);for(int i=0;我在我的算法中添加了几行,如果你添加到point类toString方法中,它打印(x,y),那么你会看到自反的,我添加了对称的,你必须更改“…”通过System.out.println,反身是exercise:)