两个数字之间的hcf数

时间:2018-05-16 12:12:17

标签: java

我想使用scanner class打印两个数字之间的hcf数。我试过这个代码,这是一个错误。如何通过使用文件处理来完成。

Execution failed.
java.util.NoSuchElementException : No line found
Stack Trace:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at TestClass.main(TestClass.java:13)  


  import java.util.*;
 class TestClass {
public static void main(String args[] ) throws Exception {      

    Scanner s = new Scanner(System.in);
    String num1 = s.nextLine();  
     String num2 = s.nextLine(); 
    int n1 =Integer.parseInt(num1);
    int n2 =Integer.parseInt(num2);      

    int max=0;
    int gcd = 1;
    if (n1<=n2)
    {
        max=n1;
    }
        else {
            max=n2;
        }
        int count=0;
    for(int i = 1; i <= max; ++i)
    {
        if((n1%i==0) && (n2%i==0))
        gcd=i;
        count++;
    }

    System.out.println(" "+ count);
}
}

1 个答案:

答案 0 :(得分:0)

程序为您提供异常的唯一方法是使用输入文件少于两行的方式运行它。

现在可能你应该读取一行输入文件,其中一行包含两个数字。如果是这样,您应该使用nextInt而不是nextLine,并取消拨打parseInt的步骤。

一旦你超越了&#34;输入&#34;问题,您的代码中还有另一个问题:

    if((n1%i==0) && (n2%i==0))
    gcd=i;
    count++;

提示#1:gcd变量的目的是什么?

提示#2:if语句在哪里结束?

提示#3:正确的缩进和使用花括号非常重要......