【问题标题】:How to declare string array of unknown size as input then tokenize如何将未知大小的字符串数组声明为输入然后标记化
【发布时间】:2017-09-21 06:18:30
【问题描述】:

我正在尝试声明一个 String 数组,该数组将包含未知的输入(这取决于用户输入的文本)。我设置了一个Scanner 来读取输入,然后声明一个String[] 来存储输入,以及一个while 循环来遍历每一行文本并在“”上定界。我的问题是:如何设置 String 的数组以包含输入,以便在 while 循环中将其分解为单词(我不能使用 ArrayList

public     class Scramble {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] words;

        String line;
        while (in.hasNext()) {
            words.add(line.trim());
        }
    }
}

【问题讨论】:

  • 不要使用数组...改用列表...
  • 你试过line.split(" ")吗?这将返回一个字符串数组,其中您的输入字符串由空格分隔。还有,line和in的连接在哪里?
  • @IvoVidovic 很抱歉成为一个新手,但我应该在哪里添加 line.split 方法?
  • 你不需要道歉。 SO中的人不想用cmets攻击你,而是要求澄清,因为这也将有助于社区回答你的问题。 split 方法实际上已经存在于 String 类中,因此您不需要添加它(如果您的意思是添加自己实现它的意义)。我建议您查看可怕的袋熊的答案。使用扫描仪读取行后,只需使用拆分方法即可。

标签: java arrays string loops


【解决方案1】:

阅读整个句子并这样做

    Scanner in = new Scanner(System.in);
    String sentence = in.nextLine ();
    String[] words = sentence.split(" ");

    System.out.println(Arrays.toString(words));

输入

这是一个测试

输出

[this, is, a, test]

【讨论】:

  • 你能用while循环来做到这一点吗?该程序的目标是获取单词中的字母并将它们打乱除了第一个和最后一个字符
  • 尝试自己做 - 如果做不到,您可以研究一下,如果仍然失败,您可以发布另一个问题。
  • @sanclemeteguy 尝试在您的 while 循环中执行类似 words[i] 的操作,然后尝试解析该单词。希望对您有所帮助。
  • 感谢您的帮助!
  • 是的 - hasnext() 是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
相关资源
最近更新 更多