使用文件编号计算GCM - NoSuchElementException

时间:2017-01-20 19:04:27

标签: java eclipse java.util.scanner nosuchelementexception

我试图将数字输入文件并按比例计算GCM。但是我一直得到NoSuchElementException。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Prog280a {

public static void main(String[] args) {
    Scanner in = null;
    int greater = 1;
    int lesser = 1;
    int a = 1;
    int b = 1;
    int originalA = 0;
    int originalB = 0;

    try {
        in = new Scanner(new File(("C:\\Users\\####\\Desktop\\####\\Eclipse\\#######\\#######2\\src\\Prog280a.dat")));
    } catch (FileNotFoundException e) {
        System.out.println("File is not found try again.");
        System.exit(0);
    }

    while (in.hasNextInt()) {
        while (a != 0) {
            greater = in.nextInt();
            lesser = in.nextInt();
            if (greater > lesser) {a = greater; b = lesser;} else {b = greater; a = lesser;}
            originalA = a;
            originalB = b;
            a = a - b;
        }
        System.out.println("The GCD of " + originalA + " & " + originalB + " is " + b);
        a = 1;
        b = 1;
    }

}

}

好的,就在我说的那句话。 ' greater = in.nextInt();'系统说这是一个不可思议的例子。它为什么这样做?请帮忙。

以下是它的说法:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Prog280a.main(Prog280a.java:25)

顺便说一下,这些是文件中的数字: 25 10 81 41 255 138 847 624 84 420 182 637 620 420 36 24 75 125 1 17

2 个答案:

答案 0 :(得分:2)

我是否正确地假设您在调用第一个greater = in.nextInt()时不一定会出错?

因为我认为你的问题与你的循环有关。 在你的外循环中,你正确地问in.hasNext() - 但是,在你的内循环中,你似乎在a != 0时向前循环 - 所以,你可以继续调用greater = in.nextInt(); lesser = in.nextInt();而不检查你的枚举是否有更多元素。

答案 1 :(得分:1)

将内部更改为,将更改为。第一个正在创建一个连续循环,直到达到文件结尾。

$printers = Get-WMIObject -Class Win32_PrinterConfiguration | Where-Object {$_.Name -EQ "CHK.Checks"}
$printers.MediaType = 270
$printers.Put()