我正在阅读一段文字
while(in.hasNextLine()){
line = in.nextLine();
}我会遇到一条以"#“开头的行。一旦我碰到这条线
if(line.startsWith("#")){
}我想抢四局双打。这条线的一个示例如下:
# should be O: 0.00, A: 0.45, B: 0.35, AB: 0.20我对Java很陌生,我想知道是否有一种方法可以在这一行中搜索双变量,并将它们保存到单独的变量中。
发布于 2013-10-08 03:05:28
试一试
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++;
}
}
}发布于 2013-10-08 03:06:29
你可以用扫描仪读到:
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);
}
}发布于 2013-10-08 03:12:47
执行后,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("[.]", "");
}https://stackoverflow.com/questions/19238329
复制相似问题