我正在编写一个程序,将给定的整数简化为它们的最简单的比率。但是当通过Scanner类在一个子方法中获取输入时发生了一个错误。下面是代码:
package CodeMania;
import java.util.Scanner;
public class Question5
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
int T=sc.nextInt();// number of test cases
sc.close();
if(T<1)
{
System.out.println("Out of range");
System.exit(0);
}
for(int i=0;i<T;i++)
{
ratio();//line 19
}
}
static void ratio()
{
Scanner sc1=new Scanner(System.in);
int N=sc1.nextInt();//line 26
if((N>500)||(N<1))
{
System.out.println("Out of range");
System.exit(0);
}
int a[]=new int[N];
for(int i=0;i<N;i++)
{
a[i]=sc1.nextInt();
}
int result = a[0];
for(int i = 1; i < a.length; i++)
{
result = gcd(result, a[i]);
}
for(int i=0;i<N;i++)
{
System.out.print((a[i]/result)+" ");
}
sc1.close();
}
static int gcd(int a, int b)
{
while (b > 0)
{
int temp = b;
b = a % b;
a = temp;
}
return a;
}
}
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at CodeMania.Question5.ratio(Question5.java:26)
at CodeMania.Question5.main(Question5.java:19)
出现此错误的原因是在扫描器上调用.close()也会关闭inputStream System.in,但是实例化一个新的扫描器不会重新打开它。
您需要在方法参数中传递单个扫描程序,或者使其成为静态全局变量。
我想从标准输入中读取一个双数,但是我总是得到这个异常: Java . util . inputmismatchexception 如果输入是整数,那没问题,但是如果是双精度的,我会得到异常。 线程“main”Java . util . inputmismatchexception Java . util . scanner . throw for(scanner . Java:864)Java .
问题内容: 我正在编写一个使用Event类的程序,该类中有一个日历实例和一个String类型的描述。创建事件的方法使用扫描仪获取月,日,年,小时,分钟和说明。我遇到的问题是Scanner.next()方法仅返回空格之前的第一个单词。因此,如果输入为“我的生日”,则该事件实例的描述就是“我的”。 我做了一些研究,发现人们使用Scanner.nextLine()解决此问题,但是当我尝试这样做时,它只是
这里是Java新手,尝试扫描下面表单中的输入: 3 3 3 101 000 101 拜托,有更有经验的人能教我如何解决这个问题吗?我发现一些问题与。nextline()和。nextint()有类似的问题,但不完全是这样。不过,如果真的是复制品,我提前道歉... (如果需要,我会添加更多信息)
我这里有两个代码块。一个扫描器正确地等待用户输入,另一个则直接通过它并调用,返回。下面是工作的块: 下面是没有的块: 这两个都是单独的类,并且是从另一个类中的main方法调用的。基本上,调用,后者又调用某个Player类的方法...这是非工作代码所在的地方。程序中是否有不适合接受输入的时候?我的印象是,任何时候我需要用户输入,我都可以使用这种方法。谢谢!
问题内容: 我正在使用Java的扫描仪读取用户输入。如果我仅使用nextLine一次,那就可以了。使用两个nextLine时,第一个不会等待用户输入字符串(第二个会输入)。 输出: X:Y :(等待输入) 我的密码 任何想法为什么会发生这种情况?谢谢 问题答案: 您可能像以前那样调用方法。这样的程序是这样的: 演示您所看到的行为。 问题是不消耗,因此下一个调用将消耗它,然后等待读取的输入。 您需要