【问题标题】:unable to understand Output of the following simple program无法理解以下简单程序的输出
【发布时间】:2017-10-07 13:17:24
【问题描述】:
/* 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”、“:”、“代码”等之后有空行)

【问题讨论】:

    标签: java stringtokenizer


    【解决方案1】:

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

    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 的构造函数, 这使它将分隔符作为标记返回。

    这在StringTokenizer.html#StringTokenizer的JavaDoc中有解释。

    【讨论】:

    • 好的...知道了。谢谢
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您正在定义 - StringTokenizer 。由于“:”,它将用冒号和空格分隔您的输入;您已经定义了两个标记,空格和冒号。接下来,您将遍历标记并执行 println ,即为每个标记打印一个新行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-07
        • 2017-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多