StringTokenizer和token' space'

时间:2016-01-31 18:07:58

标签: token space stringtokenizer

我有一个问题! 我正在使用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

谢谢

2 个答案:

答案 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()