如何在Java中读取字符串中的字符

14

我刚学Java,如果这个问题很显然,那么请原谅。

我正在尝试逐个字符读取字符串以创建树节点。例如,输入"HJIOADH" 此时节点为H J I O A D H

我注意到

char node = reader.next().charAt(0);  I can get the first char H by this
char node = reader.next().charAt(1);  I can get the second char J by this

我可以使用循环来获取所有的字符吗?例如:

for i to n
    node = reader.next().charAt(i)

我尝试了但它不起作用。

我应该怎么做?

非常感谢任何帮助。

Scanner reader = new Scanner(System.in); System.out.println("输入您的节点,以大写字母形式输入,末尾不带空格和'/'符号"); int i = 0; char node = reader.next().charAt(i); while (node != '/') {

        CreateNode(node); // this is a function to create a tree node
        i++;
        node = reader.next().charAt(i);

    }

2
请发布您的完整代码,因为我们不知道“reader”是什么? - brso05
3
使用char[] array = "HJIOADH".toCharArray();获取数组中的字符。查看String类本身中存在的方法。 - Braj
谢谢大家!我明白了。 - Ahaha
3个回答

19

除非有很多重复的标记,否则您只想一次性 next() 读取器。

String nodes = reader.next();
for(int i = 0; i < nodes.length(); i++) {
    System.out.println(nodes.charAt(i));
}

非常感谢,正是我想要的!很抱歉我没有足够的声望来为您投票。 - Ahaha

3

正如 Braj 提到的,你可以尝试使用reader.toCharArray(),然后就可以轻松使用循环了。

char[] array = reader.toCharArray();
for (char ch : array) {
    System.out.println (ch);
}

非常感谢,这个会起作用,但我不想为此消耗额外的空间。 - Ahaha
1
@Ahaha 你说的“extra space”是什么意思? - Srinath Ganesh
如果使用此实现方式,您将使用更少的空间。 - Pedro Borges

1

对于那些寻找其他解决方案的人:

    String anyString = "anystring";
    Scanner sn = new Scanner(anyString);
    sn.useDelimiter("");

    while (sn.hasNext()){
        char c = sn.next().charAt(0);
        // logic for chars...
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接