繁体   English   中英

我将如何使用整数定界符? (Java)

[英]How would I go about using an integer delimiter? (Java)

因此,我尝试使用扫描仪读取文件。 该文件包含两个镇的数据,并且它们之间的距离在每行上都遵循它们。 像这样:

埃布尔,圭拉,90岁

我试图让每个城镇的人,允许重复。 这是我到目前为止的内容:

   // Create scanner for file for data
   Scanner scanner = new Scanner(new File(file)).useDelimiter("(\\p{javaWhitespace}|\\.|,)+");

   // First, count total number of elements in data set
   int dataCount = 0;

   while(scanner.hasNext())
   {
      System.out.print(scanner.next());
      System.out.println();
      dataCount++;
   }

现在,程序将打印出每条信息,无论它是城镇名称还是整数值。 像这样:

bor

盖拉

90

如何做到这一点,所以每行都有这样的输出:

bor

盖拉

谢谢!

假设输入格式正确,只需将循环修改为:

while(scanner.hasNext())
{
    System.out.print(scanner.next());
    System.out.print(scanner.next());
    System.out.println();
    scanner.next();
    dataCount += 3;
}

否则,如果没有很好地形成的输入,请与hasNext()每前next()调用,如果你需要打破循环出现。

尝试这种方式:

    Scanner scanner = new Scanner(new File(file));
    int dataCount = 0;

    while(scanner.hasNext())
    {
        String[] line = scanner.nextLine().split(",");
        for(String e : line) {
            if (!e.matches("-?\\d+")) System.out.println(e);;
        }
        System.out.println();
        dataCount++;
    }
}

我们将逐行处理,将其拆分为数组,并使用正则表达式检查它是否为整数。

-? stays for negative sign, could have none or one
\\d+ stays for one or more digits

输入示例:

Ebor,Guyra,90
Warsaw,Paris,1000

输出:

Ebor
Guyra

Warsaw
Paris

我写了一个叫做intParsable的方法:

public static boolean intParsable(String str)
{
    int n = -1;
    try
    {
        n = Integer.parseInt(str);
    }
    catch(Exception e) {}
    return n != -1;
}

然后在您的while循环中,我将有:

String input = scanner.next();
if(!intParsable(input))
{
    System.out.print(input);
    System.out.println();
    dataCount++;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM