Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从扫描线抓取双打。_Java_Double_Java.util.scanner - Fatal编程技术网

Java 从扫描线抓取双打。

Java 从扫描线抓取双打。,java,double,java.util.scanner,Java,Double,Java.util.scanner,我在读一行和你一样的书 while(in.hasNextLine()){ line = in.nextLine(); } 我将遇到以“#”开头的一行。一旦我到了这条线 if(line.startsWith("#")){ } 我要抢四个双打。该行的示例如下所示: # should be O: 0.00, A: 0.45, B: 0.35, AB: 0.20 我是Java新手,我想知道是否有一种方法可以浏览这一行,查找double,并

我在读一行和你一样的书

    while(in.hasNextLine()){
       line = in.nextLine();  
    }
我将遇到以“#”开头的一行。一旦我到了这条线

    if(line.startsWith("#")){

    }
我要抢四个双打。该行的示例如下所示:

    # should be O: 0.00, A: 0.45, B: 0.35, AB: 0.20
我是Java新手,我想知道是否有一种方法可以浏览这一行,查找double,并将它们保存到单独的变量中

试试看

    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++;
        }
    }
}
试一试


您可以使用扫描仪阅读:

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);
    }
}
publicstaticvoidmain(字符串[]args){
字符串行=“#应该是O:0.00,A:0.45,B:0.35,AB:0.20”;
扫描仪sc=新扫描仪(线);
sc.useDelimiter(“\\\\;,”);
对于(int i=0;i<4;i++){
而(!sc.hastNextDouble()){
sc.next();
}
双d=sc.nextDouble();
系统输出打印ln(d);
}
}

您可以使用扫描仪阅读:

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);
    }
}
publicstaticvoidmain(字符串[]args){
字符串行=“#应该是O:0.00,A:0.45,B:0.35,AB:0.20”;
扫描仪sc=新扫描仪(线);
sc.useDelimiter(“\\\\;,”);
对于(int i=0;i<4;i++){
而(!sc.hastNextDouble()){
sc.next();
}
双d=sc.nextDouble();
系统输出打印ln(d);
}
}

执行后,
列表
将包含该行的所有双精度字符

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("[.]", "");
}
double[]list=new-double[line.length()-line.replace(“.”,“).length()”;
for(int i=0;i
执行后,
列表
将包含该行的所有双精度字符

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("[.]", "");
}
double[]list=new-double[line.length()-line.replace(“.”,“).length()”;
for(int i=0;i
输入是否始终为这种模式?或者它可能会变化?输入总是在这个模式中。在这种情况下,我添加了一个示例解决方案。输入是否总是在这个模式中?或者它可能会有所不同?输入总是以这种模式。在这种情况下,我添加了一个示例解决方案。实际上,我以前尝试过这种方法,但在尝试运行时,它似乎对我不起作用。在.nextDouble()中的双x1=in上给出了一个错误;line@DLR:你确定吗?这对我有用。您是否使用了行
sc.useDelimiter()
另外,我有一个while循环来跳过不需要的模式。如果我单独运行您的代码,它可以正常工作,但是它在我的程序上无法工作,我得到了“线程中的异常”main“java.util.InputMismatchException”错误我之前确实尝试过这个方法,当我尝试跑步时,它似乎对我不起作用。在.nextDouble()中的双x1=in上给出了一个错误;line@DLR:你确定吗?这对我有用。您是否使用了行
sc.useDelimiter()
另外,我有一个while循环来跳过不需要的模式。如果我单独运行它,您的代码可以正常工作,但是它在我的程序上无法工作,我得到了“线程中的异常”main“java.util.InputMismatchException”错误我有一个问题。如果我想用指定的数字来显示这些值,例如#1 0.00/n#2 0.45/n。。。等等我该怎么做呢?我曾尝试在其中添加一个int x变量,并在print语句之后递增它……但它不会递增。我觉得自己像个白痴,我在while循环中初始化了int x(或I)。谢谢你纠正我的初学者错误。我有一个问题。如果我想用指定的数字来显示这些值,例如#1 0.00/n#2 0.45/n。。。等等我该怎么做呢?我曾尝试在其中添加一个int x变量,并在print语句之后递增它……但它不会递增。我觉得自己像个白痴,我在while循环中初始化了int x(或I)。谢谢你纠正我的初学者错误。