SecondsCalculator
import java.io.*;
import java.util.*;
public class SecondsCalculator {
public static void main(String[] args) throws IOException {
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String readLine = stdIn.readLine(); //读取一个文本行
StringTokenizer st=new StringTokenizer(readLine,":"); //以“:”为分隔符分隔文本行readLine
int hour = 0;
int min = 0;
int sec = 0;
try
{
if(st.countTokens() == 3) {
hour=Integer.parseInt(st.nextToken()); //返回分隔符处的下一个标记
min=Integer.parseInt(st.nextToken());
sec=Integer.parseInt(st.nextToken());
if(sec>=60 || min>=60 || hour>=24 || sec<0 || min<0 || hour<0)
System.out.println("Invalid input");
else
System.out.println("Total seconds is "+(hour*3600+60*min+sec));
}
else
System.out.println("Invalid input");
}
catch(NumberFormatException e) //捕获输入数据类型的异常
{
System.out.println("java.lang.NumberFormatException: " + e.getMessage());
}
}
}
考察:
class StringTokenizer
构造函数:
public StringTokenizer(String str, String delim)
为指定字符串构造一个 string tokenizer。delim
参数中的字符都是分隔标记的分隔符。分隔符字符本身不作为标记。
public StringTokenizer(String str)
为指定字符串构造一个 string tokenizer。tokenizer 使用默认的分隔符集 " /t/n/r/f"
,即:空白字符、制表符、换行符、回车符和换页符。分隔符字符本身不作为标记。
方法:
public int countTokens()
计算在生成异常之前可以调用此 tokenizer 的 nextToken
方法的次数。当前位置没有提前。
public String nextToken(String delim)
返回此 string tokenizer 的字符串中的下一个标记。首先,字符集被更改为字符串 delim 中的字符,该字符集被认为是 StringTokenizer 对象的分隔符。接着返回字符串中当前位置之后的下一个标记。当前位置被提前到所识别的标记前。进行此调用后新的分隔符集仍然保持默认值。