编辑:添加了大括号{}和Eclipse屏幕截图
我遇到了一个简单的赋值问题,即创建一个类,该类具有一个数组列表来存储命令行中的单词,每个单词都附加到数组列表的末尾,然后搜索列表中某个特定的单词(" the ")并打印单词的出现位置,再加上另一种方法返回一个新的数组列表,其中的单词位于一个数字指定的位置。
下面是我写的代码。在Eclipse中,它不会显示任何错误,但当我试图通过运行配置运行代码并输入以下虚拟文本时:“快速褐狐跳过懒狗,快速褐狐跳过懒狗,快速褐狐跳过懒狗。”,它不起作用。我不知道为什么,你能给我点建议吗?谢谢!
import java.util.ArrayList;
import java.util.Scanner;
class Search {
ArrayList<String> list;
public Search(){
list = new ArrayList<String>();
}
public void read(){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
list.add(scanner.next());
}
scanner.close();
}
public void find(String word){
for(int i = 0; i < list.size(); i++) {
if(list.get(i).equalsIgnoreCase(word)) {
System.out.println(i);
}
}
}
public ArrayList<String> subsequence(int[] positions){
ArrayList<String> result = new ArrayList<String>();
for(int i = 0; i < positions.length; i++) {
if(positions[i] >= 0 && positions[i] < list.size()) {
result.add(list.get(positions[i]));
}
}
return result;
}
// Testing method within class again
public static void main(String[] args){
Search search = new Search();
search.read();
search.find("the");
for(String s : search.subsequence(new int[]{0, 3, 4}))
System.out.println(s);
}
}

发布于 2020-05-09 08:56:21
@Chris评论的那样,在编写代码时请使用大括号。我以两种不同的方式运行您的代码,并得到了输出。scanner.hashNext(),那么您应该像这样更改main()和read()
公共静态空主(String[] args) { search搜索=新搜索();扫描器sc =新扫描器(System.in);字符串行= sc.nextLine();sc.close();search.read(行);search.find("the");for (String s: search.subsequence(new int[] { 0,3,4 })) { System.out.println(s);}Scanner使用分隔符模式将其输入分解为令牌,默认情况下该模式与空格匹配。然后,可以使用各种后续方法将生成的令牌转换为不同类型的值。next()和hasNext()方法及其原始类型的伙伴方法首先跳过任何与分隔符模式匹配的输入,然后尝试返回下一个令牌。hasNext()和next()都可能阻止等待进一步的输入。hasNext()块是否与其关联的下一个方法是否将阻塞无关。StringTokenizer,那么就必须将read()更改为您现有的代码。
公共空读(字符串行){扫描器=新扫描器(System.in);StringTokenizer st =新StringTokenizer(scanner.nextLine(),“");while (st.hasMoreElements()) {list.add(st.nextElement().toString();} scanner.close();}StringTokenizer总是更好的。StringTokenizer类允许应用程序将字符串拆分为令牌。https://stackoverflow.com/questions/61693015
复制相似问题