【发布时间】:2020-08-24 19:53:04
【问题描述】:
编辑:添加大括号 {} 和 Eclipse 屏幕截图
我有一个简单的分配问题来创建一个类,该类具有一个数组列表来存储命令行中的单词,每个单词都附加到数组列表的末尾,然后在列表中搜索特定的单词( "the") 并打印单词出现的位置,以及另一种返回新数组列表的方法,其中单词位于数字指定的位置。
我写了下面的代码。在 Eclipse IDE 中,它没有显示任何错误,但是当我尝试通过运行配置运行代码并输入以下虚拟文本时:“快速棕色狐狸跳过懒狗。快速棕色狐狸跳过懒狗。敏捷的棕色狐狸跳过了懒惰的狗。”,它不起作用。我不知道为什么,你能给我建议吗?谢谢!
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);
}
}
【问题讨论】:
-
您好,欢迎您分享您的整洁外观和布局合理的代码。请让我们确切地知道当您尝试运行它时会发生什么,尽管我认为您可能会在多行块周围缺少大括号 {}。一般来说,即使只有一行,最好使用大括号圆形块,以避免将来有人添加一行时出现奇怪的错误
-
另外,我对 Scanner 不太熟悉,但 hasNext 返回一行输入(由回车分隔)。如果是这样,您需要将其分解为单独的单词。
-
我不认为缺少任何大括号,但是使用它们的建议仍然有效,尤其是在循环内有 if 块的地方令人困惑。我知道有缩进,但是当涉及到生产代码时,请记住,并不是每个使用你的代码的人都以相同的方式格式化它,安全地使用它,习惯使用大括号。那么你是一次输入一个单词,还是在敲回车之前输入整个句子?如果是后者,那可能是你的问题。如果有疑问添加一些 System.out.println,或者只是通过代码调试看看发生了什么
-
谢谢你,克里斯,在你的建议中注明 - 我已经添加了 {},@DeepDalsania 也在下面解释了它:)
-
您将它们作为参数传递,是的,但您没有在
main方法中使用args。相反,您尝试从标准输入中读取它。 tl;dr:search.list.addAll(Arrays.asList(args));而不是search.read();
标签: java arraylist java.util.scanner