java与c#在比较字符串是否相等时不同:
equals()方法
String的equals()方法用于比较两个字符串是否相等。由于字符串是对象类型,所以不能简单的用“==”(双等号)判断两个字符串是否相等,而使用equals()方法比较两个对象的内容。
约瑟夫问题:
节点类定义:
Node
public class Node { public String Content; public Node Link; public Node() { Content=null; Link=null; } public Node(String theContent) { Content=theContent; Link=null; } }
节点链接定义:
NodeList
public class NodeList { public Node Current; public Node Header; public int Count=0; //初始化(一次添加数据) public void Create(String str) { if(Count==0) { Header=new Node(str); Current=Header; Count++; } else { Current.Link=new Node(str); Current=Current.Link; Count++; } Current.Link=Header; } //删除指定数据 public void Remove(String str) { Node Info=Header; Node temp=Header; Current=Header; Node Last=Header; for(int i=0;i<Count;i++) { if(i==0&&Current.Content.equals(str)) { //最后的没有指向Header for(int j=0;j<Count-1;j++) { Last=Last.Link; } Header=temp.Link; Last.Link=Header; Info=Current; Count--; } else { if(Current.Content.equals(str)) { temp.Link=Current.Link; Info=Current; Count--; } else { } temp=Current; Current=Current.Link; } } Current=Info; } }
输出:
Output
public class Output { public static void main(String[] agrs) { NodeList Lists=new NodeList(); for(int i=0;i<6;i++) { Lists.Create("str"+i); } Lists.Current=Lists.Header; //下面进行环绕(三人死一个) for(int j=0;j<6;j++) { if(j%3==1) { Lists.Remove(Lists.Current.Content); /* System.out.print(Lists.Current.Content+"\n"); */ } Lists.Current=Lists.Current.Link; } System.out.print("输出为:\n"); Lists.Current=Lists.Header; for(int i=0;i<Lists.Count;i++) { if(Lists.Current!=null) { System.out.print(Lists.Current.Content+"\n"); Lists.Current=Lists.Current.Link; } } } }