【发布时间】:2015-08-19 19:57:00
【问题描述】:
好的,所以我正在尝试设计一个简单的程序来检查长度为 4 个字符的子字符串是否在所有初始字符串中。这是我的代码如下:
public class StringSearch{
private String[] s1Array = {"A","C","T","G","A","C","G","C","A","G"};
private String[] s2Array = {"T","C","A","C","A","A","C","G","G","G"};
private String[] s3Array = {"G","A","G","T","C","C","A","G","T","T"};
//{for (int i = 0; i < s1Array.length; i++){
// System.out.print(s1Array[i]);
//}}//check if Array loaded correctly
/**
* This is the search method.
*
* @param length length of sub string to search
* @param count counter for search engine
* @param i for-loop counter
* @return subStr returns strings of length = 4 that are found in all 3 input strings with at most
* one mismatched position.
*/
public String Search()
{
int length = 4;
int count = 0;
int i = 0;
ArrayList<StringSearch> subStr = new ArrayList<StringSearch>();
//String[] subStr = new String[4];
do
{
for (i = count; i < length; i++){
subStr.add(s1Array[i]); // cant find .add method???
count = count + 1;
}
if (s2Array.contains(subStr) && s3Array.contains(subStr)){ //can't find .contains method???
System.out.println(subStr + "is in all 3 lists.");
}
if (count = s1Array.length){
System.out.println("Task complete.");
}
else{
count = count - length;
count = count + 1;
}
}while (count <= s1Array.length);
}
}
由于某种原因,Java 似乎找不到 .add 或 .contains 方法,我不知道为什么。所以我的方法是将每个初始字符串转换为一个数组(因为指定的每个字符串的分配正好是 N 个元素长,在这种情况下 N = 10),其中 1 个字母将是 1 个元素。接下来我设置了一个 for 循环,它将扫描 s1Array 并将前 4 个元素添加到用于搜索 s2Array 和 s3Array 的 ArrayList subStr。无论出于何种原因,这都是 .add 不是有效方法的地方。将其注释掉并再次编译,我还遇到了 .contains 方法不是有效方法的问题。为什么这行不通?我错过了什么?从逻辑上讲,这似乎是有道理的,但我想也许我在语法中遗漏了一些东西?我们将不胜感激,因为我是 Java 新手。
【问题讨论】:
-
Arrays和Arraylists在 Java 中是完全不同的数据类型。 -
.add 和 .contains 是 ArrayList 类的一部分。 subStr.add(s1Array[i]);不会工作,因为 subStr 被定义为
而 s1Array 被定义为 String -
有关 ArrayList 的更多信息,请参阅 docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
标签: java arrays search arraylist