按照你的思路,修改了一下,现在可以用了。
import java.util.Scanner;
public class Test {
private Scanner keyboard = new Scanner(System.in);
public Test() {
String string1;
String string2;
System.out.println("Enter a string:");
string1 = keyboard.next();
System.out.println("Enter another string:");
string2 = keyboard.next();
boolean test1 = TestOverlap(string1, string2);
if (test1 == true) {
System.out.println("is overlap");
} else {
System.out.println("not overlap");
}
}
public boolean TestOverlap(String s1, String s2) {
boolean b = true;
char [] arr = s1.toCharArray();
for(int i = 0; i < arr.length; i++){
int x = s2.indexOf(arr[i]);
System.out.println(x);
if(x < 0){
return false;
}
}
return true;
}
public static void main(String[] args) {
new Test();
}
}
数据结构有个匹配算法。。好久有点忘记了。。
public boolean TestOverlap(string s1, string s2)
{
for(int i = 0; i<=s1.length; i++)
{
for(int j = 0; j<=s2.length; j++)
{
if(s1[i] != s2[j]&&j==s2.length-1)
{
return false;
}
}
}
}
其实你这个方法就是,把S1里面的字符都历遍一次s2的字符,应该先把字符串转为字符数组,然后还有当发现s1的一个字符不在s2里面,就停止再继续循环,所以还在加break,像你那样写,可能就for一次,就停止了
outputElements的参数是String的数组,虽然参数名和类名一样,但也只是作为形参,一样不一样都没影响。
StudentName sn=new StudentName();
sn.outputElements(StudentName[0]);
StudentName[0]是哪来的东西?你跟本没有定义过StudentName这个变量,而且由于和类名一样,你也无法定义这个名称的变量。虽然不清楚你要做什么,不过改成这样应该就行了
StudentName sn=new StudentName();
sn.outputElements(new String[1]); //自己定义下数组长度,这里随便写的1。
说实话不知道运行outputElements时会不会出错我也不清楚。不行的话把StudentName改成别的名。