无法理解以下简单程序的输出
unable to understand Output of the following simple program
/* 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"、“:”、"Code" 等之后有空行)
因为构造函数中的 true
参数意味着 return 分隔符 作为单独的标记。因此,除了单词之外,每个 space(显示为空白行)以及分号都会得到一个标记。
如果我们让打印更详细一点,它会变得更清晰一点:
while (st3.hasMoreTokens())
System.out.printf("token: '%s'\n", st3.nextToken());
输出将是:
token: 'JAVA'
token: ' '
token: ':'
token: ' '
token: 'Code'
token: ' '
token: ':'
token: ' '
token: 'String'
如您所见,</code> 和 <code>:
是标记。
这是因为指定分隔符字符串 :
中的每个字符都用作分隔符。
你将 true
作为第三个参数传递给 StringTokenizer
的构造函数,
这使得它 return 作为标记的分隔符。
这在 StringTokenizer.html#StringTokenizer 的 JavaDoc 中有解释。
您正在定义 - StringTokenizer 。由于“:”,它将用冒号和 space 分割您的输入;您已经定义了两个标记,space 和冒号。接下来,您将遍历标记并执行 println,即为每个标记打印一个新行。
/* 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"、“:”、"Code" 等之后有空行)
因为构造函数中的 true
参数意味着 return 分隔符 作为单独的标记。因此,除了单词之外,每个 space(显示为空白行)以及分号都会得到一个标记。
如果我们让打印更详细一点,它会变得更清晰一点:
while (st3.hasMoreTokens())
System.out.printf("token: '%s'\n", st3.nextToken());
输出将是:
token: 'JAVA' token: ' ' token: ':' token: ' ' token: 'Code' token: ' ' token: ':' token: ' ' token: 'String'
如您所见,</code> 和 <code>:
是标记。
这是因为指定分隔符字符串 :
中的每个字符都用作分隔符。
你将 true
作为第三个参数传递给 StringTokenizer
的构造函数,
这使得它 return 作为标记的分隔符。
这在 StringTokenizer.html#StringTokenizer 的 JavaDoc 中有解释。
您正在定义 - StringTokenizer 。由于“:”,它将用冒号和 space 分割您的输入;您已经定义了两个标记,space 和冒号。接下来,您将遍历标记并执行 println,即为每个标记打印一个新行。