java stringtokennizer 问题 那段划红线的是啥意思??详细点!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java stringtokennizer 问题 那段划红线的是啥意思??详细点!!相关的知识,希望对你有一定的参考价值。
StringTokenizerpublic StringTokenizer(String str,
String delim,
boolean returnDelims)为指定字符串构造一个 string tokenizer。delim 参数中的所有字符都是分隔标记的分隔符。
如果 returnDelims 标志为 true,则分隔符字符也作为标记返回。每个分隔符都作为一个长度为 1 的字符串返回。如果标志为 false,则跳过分隔符,只是用作标记之间的分隔符。
注意,如果 delim 为 null,则此构造方法不抛出异常。但是,尝试对得到的 StringTokenizer 调用其他方法则可能抛出 NullPointerException。
参数:
str - 要解析的字符串。
delim - 分隔符。
returnDelims - 指示是否将分隔符作为标记返回的标志。
抛出:
NullPointerException - 如果 str 为 null。
===================================所以该方法的意义就是
用+、-、*、/、)、(作为字符串s的分隔符,同时+-*/)(也单独作为一个字符串返回
打印结果
3.6
*
2.5
+
(
-
1.5
)
-
6 参考技术A 构造函数的参考,
第一个是被拆分的字串
中间的是分隔的符号
后面的是否返回分隔的字符
StringTokenizer
public StringTokenizer(String str,
String delim,
boolean returnDelims)
Constructs a string tokenizer for the specified string. All characters in the delim argument are the delimiters for separating tokens.
If the returnDelims flag is true, then the delimiter characters are also returned as tokens. Each delimiter is returned as a string of length one. If the flag is false, the delimiter characters are skipped and only serve as separators between tokens.
Note that if delim is null, this constructor does not throw an exception. However, trying to invoke other methods on the resulting StringTokenizer may result in a NullPointerException.
Parameters:
str - a string to be parsed.
delim - the delimiters.
returnDelims - flag indicating whether to return the delimiters as tokens.
Throws:
NullPointerException - if str is null 参考技术B public StringTokenizer(String str,
String delim,
boolean returnDelims)为指定字符串构造一个 string tokenizer。delim 参数中的所有字符都是分隔标记的分隔符。
如果 returnDelims 标志为 true,则分隔符字符也作为标记返回。每个分隔符都作为一个长度为 1 的字符串返回。如果标志为 false,则跳过分隔符,只是用作标记之间的分隔符。
楼主上面显示的标记符号为+ - * / ( ) 这六个是作为一个字符串处理的,不要看错了
【java】BufferedReader的问题
下面是我写的一个测试程序,如果不把Input1.close();屏蔽调的话,就无法输入Input2,报的错误是:
java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at test.main(test.java:33)
请问这是怎么回事啊?我第一个BufferedReader使用完后关闭,然后第二个BufferedReader是重新申请的啊?为什么第一个关闭了,第二个会提示Stream closed呢?
以下是我的程序test.java,请了解的朋友给解释一下,谢谢!
import java.io.*;
public class test
static int num;
static String str;
public static void main(String[] args)
try
System.out.print("Input number: ");
BufferedReader Input1 = new BufferedReader(new InputStreamReader(System.in));
num = Integer.parseInt(Input1.readLine());
Input1.close();//如果屏蔽该句则可以输入Input2
catch(IOException e1)
e1.printStackTrace();
try
System.out.print("Input string: ");
BufferedReader Input2 = new BufferedReader(new InputStreamReader(System.in));
str = Input2.readLine();
Input2.close();
catch(IOException e2)
e2.printStackTrace();
System.out.println("number = " + num + "\nString = " + str);
BufferedReader Input2 = new BufferedReader(new InputStreamReader(System.in));
这两句话中的Input1和Input2都是由System.in封装而来。这是设计模式中的装饰模式的应用,顾名思义,装饰模式就是对最原始的东西进行装饰,只改变了外表,但实质并没有改变。System.in就是最原始的东西,Input1和Input2只是他被装饰后的外表,所以程序中的Input1和Input2的实质上都是System.in。调用Input1.close(),会自动调用Input1的实质System.in.close(),所以对于Input2来说他的实质System.in已经关闭掉,所以... 参考技术A 你关闭流最好做个finally 参考技术B 高手 但是我不明白为什么要关掉流呢
以上是关于java stringtokennizer 问题 那段划红线的是啥意思??详细点!!的主要内容,如果未能解决你的问题,请参考以下文章