我正在阅读
while(in.hasNextLine()){
line = in.nextLine();
}
我会遇到一条以"#"开头的行。一旦我点击这一行
if(line.startsWith("#")){
}
我想抓住线上的四个双打。该行的示例如下所示:
# should be O: 0.00, A: 0.45, B: 0.35, AB: 0.20
我是Java的新手,我想知道是否有办法扫描这条线路寻找双打,并将它们保存到单独的变量中。
答案 0 :(得分:2)
试
public class Test {
public static void main(String args[]) {
String input="# should be O: 0.00, A: 0.45, B: 0.35, AB: 0.20";
Pattern pattern = Pattern.compile("[0-9].[0-9]{2}");
Matcher m = pattern.matcher(input);
int i=0;
while (m.find()) {
String str = m.group();
double value = Double.parseDouble(str);
System.out.println( "#"+ i + " " + value);
i++;
}
}
}
答案 1 :(得分:2)
您可以使用扫描仪阅读:
Scanner sc = new Scanner(line);
double a = sc.nextDouble();
假设您的输入将采用类似的模式,这是一个解决方案。
public static void main(String[] args) {
String line = "# should be O: 0.00, A: 0.45, B: 0.35, AB: 0.20";
Scanner sc = new Scanner(line);
sc.useDelimiter("\\ |,");
for (int i = 0; i < 4; i++) {
while (!sc.hasNextDouble()) {
sc.next();
}
double d = sc.nextDouble();
System.out.println(d);
}
}
答案 2 :(得分:0)
执行后,list
将包含该行的所有双打。
double[] list = new double[line.length() - line.replace(".", "").length()];
for(int i = 0; i < list.length; i++) {
int decimalIndex = line.indexOf(".");
list[i] = Double.parseDouble(line.substring(decimalIndex - 1, decimalIndex + 3));
line = line.replaceFirst("[.]", "");
}