按用户分解String句子中的组件

时间:2012-11-10 22:38:31

标签: java

例如: 有人订购了一些电影通行证: 用户输入:获得2张17.50的3张门票 如何从所输入的字符串中提取所购票证的数量,了解所选的电影以及总成本。

非常感谢任何帮助。

                 String Mac1
         System.out.println("Enter num of tickets, movie & (at) ticket price:");
         Mac1 = input.nextLine();

         String Mov1[]= Mac1.split(", ");

           for (int i = 0; i < Mov1.length; i++) 
           {
               System.out.print(Mov1[i]);

           }

2 个答案:

答案 0 :(得分:2)

使用正则表达式更合适:

Matcher m = Pattern.compile("(\\d+) tickets for (.*) at (.*)").matcher(Mac1);
if (m.matches()) {
  int tickets = Integer.parseInt(m.group(1));
  String movie = m.group(2);
  double cost = Double.parseDouble(m.group(3));
  double total = tickets * cost;
}

答案 1 :(得分:1)

似乎正则表达式是工作的最佳工具(无论它看起来有多糟糕):

(\\d+) tickets for (.*) at (\\d{1,2})[.:](\\d{2})