【问题标题】:Count the integers in a string计算字符串中的整数
【发布时间】:2015-03-14 15:29:30
【问题描述】:

我有一个名为 line 的字符串,它是一堆整数。

String line = 1 2 3 4 5 65 70

我制作了一个名为 lin 的扫描仪。

Scanner lin = new Scanner(line);

我现在想计算一行中的整数个数。

我试过了

while (lin.hasNextInt()){
    size++;
}

但它不起作用。 Java 在编译时没有给出任何错误,但似乎只是在无限循环中运行。帮助?会不会是别的?

【问题讨论】:

    标签: java java.util.scanner


    【解决方案1】:

    通过调用hasNextInt(),您只是在询问它是否还有一些东西要消耗,而不是真正消耗它。

    试试这个:

    while(lin.hasNextInt()) {
        lin.nextInt();  // Consumes the int
        size++;
    }
    

    话虽如此,还有其他方法可以解决此问题(使用 String.split() 解析字符串输入并查看您所拥有的是否是 Integer 将是一个好方法)。

    String line = "1 2 3 4 5 65 70"
    String parts[] = line.split("\\s");
    int size = 0;
    for(String part : parts) {
        try {
           Integer.parseInt(part);
           size++;
        } catch(NumberFormatException e) {
           // What we parsed was NOT a number, catch the exception and move on.
        }
    }
    System.out.println("Found " + size + " numbers.");
    

    这样,如果您的输入包含“1 a 2”,您将在其中考虑“a”。当然,如果你的输入保证是所有数字和空格,你可以得到parts的长度,但我不太相信有保证的输入格式。

    【讨论】:

    • 好吧,那就更糟了。它现在给了我很多错误,但从其他方面我认为呃,但谢谢!!!你确实修复了那部分
    • 酷,很高兴有帮助。在您尝试修复它们后发布您的其他错误,如果您需要帮助,我们可以与您一起解决。
    • 你可能知道什么是 NoSuchElementException 以及它是否与此相关?
    • 这通常意味着一个迭代器已经用完了可以给你的东西。查看我发布的另一个解决方案,您在其中阅读了整行,然后将其拆分为空白。这可能会更清楚一点。
    【解决方案2】:
     String line ="1 2 3";
     String array[] = line.split(" ");
     value = array.length;
    
     value = line.split(" ").length; // in one line
    

    是一种替代方法。 (但不检查它们是否为整数)

    【讨论】:

      猜你喜欢
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 2014-08-17
      • 2016-10-28
      • 2018-04-20
      相关资源
      最近更新 更多