无法理解以下简单程序的输出


/* A Java program to illustrate working of StringTokenizer
class:*/
import java.util.*;
public class NewClass
{
    public static void main(String args[])
    {

        System.out.println("Using Constructor 3 - ");
        StringTokenizer st3 = 
            new StringTokenizer("JAVA : Code : String", " :", true);
        while (st3.hasMoreTokens())
            System.out.println(st3.nextToken());
    }
}

为什么上面程序的输出如下:

Using Constructor 3 - 
JAVA
:
Code
:
String

我的问题是为什么它有额外的换行符(即它在"Java"、":"、"代码"等之后有空行)

如果我们使打印更详细一点,它会变得更加清晰:

while (st3.hasMoreTokens())
  System.out.printf("token: '%s'n", st3.nextToken());

输出将是:

token: 'JAVA'
token: ' '
token: ':'
token: ' '
token: 'Code'
token: ' '
token: ':'
token: ' '
token: 'String'

如您所见, :是令牌。这是因为指定的分隔符字符串中的每个字符true都用作分隔符。并且您将StringTokenizer作为第 3 个参数传递给 true 的构造函数,这使得它以标记的形式返回分隔符。

这在 StringTokenizer

.html#StringTokenizer 的 JavaDoc 中有解释。

因为构造函数中的 CC_6 参数意味着将分隔符作为单独的标记返回。因此,除了单词之外,您还可以为每个空格(显示为空行)以及分号获得一个标记。

您正在定义 - 字符串标记器。由于" :";您已经定义了两个标记:空格和冒号。接下来,您将循环遍历令牌并进行 println,即为每个令牌打印一行新行。

相关内容

  • 没有找到相关文章

最新更新