首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用扫描器的字符串数组列表

使用扫描器的字符串数组列表
EN

Stack Overflow用户
提问于 2020-05-09 07:04:52
回答 1查看 3.5K关注 0票数 0

编辑:添加了大括号{}和Eclipse屏幕截图

我遇到了一个简单的赋值问题,即创建一个类,该类具有一个数组列表来存储命令行中的单词,每个单词都附加到数组列表的末尾,然后搜索列表中某个特定的单词(" the ")并打印单词的出现位置,再加上另一种方法返回一个新的数组列表,其中的单词位于一个数字指定的位置。

下面是我写的代码。在Eclipse中,它不会显示任何错误,但当我试图通过运行配置运行代码并输入以下虚拟文本时:“快速褐狐跳过懒狗,快速褐狐跳过懒狗,快速褐狐跳过懒狗。”,它不起作用。我不知道为什么,你能给我点建议吗?谢谢!

代码语言:javascript
复制
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);

    }
}  

EN

回答 1

Stack Overflow用户

发布于 2020-05-09 08:56:21

  • 正如亲爱的@Chris评论的那样,在编写代码时请使用大括号。我以两种不同的方式运行您的代码,并得到了输出。
  • First Way
  • 如果您想在with中使用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类允许应用程序将字符串拆分为令牌。
  • StringTokenizer对象在内部维护要标记的字符串中的当前位置。有些操作将当前位置提升到已处理字符之后。使用用于创建StringTokenizer对象的字符串的子字符串返回令牌。

参考扫描仪StringTokenizer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61693015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档