我有一个问题! 我正在使用StringTokenizer,但我不明白我如何能够采取空间'作为代币! 这是我的方法的一个例子:
NumGiven=int(input('Please enter a 7 or 8 digit number:'))
但是当它找到“空间”时它会中断方法的执行。
INPUT:
1)SELECT
accountNumber,
accountName,
sectorID,
territoryID,
regionID,
SUM(amount) AS totalSales
SELECT
CASE WHEN totalSales < 1001.00 THEN 1001.00 - totalSales
WHEN totalSales < 2501.00 THEN 2501.00 - totalSales
WHEN totalSales < 5001.00 THEN 5001.00 - totalSales
WHEN totalSales < 10001.00 THEN 10001.00 - totalSales
WHEN totalSales < 15001.00 THEN 15001.00 - totalSales
END AS needed
FROM
tblsales
GROUP BY
accountName
ORDER BY
accountName ASC
2)import java.util.*;
public class miaProva{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Write phrase");
String s=sc.next();
StringTokenizer st=new StringTokenizer(s, " ,.");
StringBuilder sb=new StringBuilder();
sb.append('>');
while(st.hasMoreTokens()){
sb.append(st.nextToken());
}
sb.append('<');
System.out.println(sb);
}
}
输出:
1)hi,how,are.you
2)hi,how are you
谢谢
答案 0 :(得分:0)
您是否在String类中尝试过split方法?
在您的示例中,当您执行sc.next()时,它会为您提供以空格分隔的文本。 因此,当您键入“嗨,你好吗”时,sc.next()仅返回“hi,how” 它不是StringTokenizer的问题,使用sc.nextLine()而不是sc.next()。这应该会给你你想到的结果。
答案 1 :(得分:0)
scanner使用空格作为默认分隔符。所以当你调用sc.next()
时,它只返回空格前输入的第一部分。你可以告诉它包括这样的整行:
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\r\n");
其中&#34; \ r \ n&#34;在Windows操作系统上匹配换行符。
编辑:最好使用lineSeparator
方法,这样就适用于任何操作系统。
Scanner sc = new Scanner(System.in);
sc.useDelimiter(System.lineSeparator());
编辑2:或者更好(阅读@ Sathiesh的答案),使用sc.nextLine()
。