mi stava facendo un programma per ridurre dato interi alla loro più semplice ratio.But un errore si verifica durante l'assunzione di ingressi attraverso classe Scanner in una sotto-modalità di program.Here è il codice:di ingresso utilizzando la classe scanner in java
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;
}
}
L'errore è--
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)
Qui ho usato 2 scanner separato oggetti mb in funzione principale e SC1 in funzione di rapporto di prendere input da console. Tuttavia, se sto dichiarando un oggetto Scanner statico di tipo pubblico in ambito di classe e quindi utilizzando un solo oggetto Scanner in tutto il programma per prendere input, il programma funziona come richiesto senza errori.
Perché questo sta accadendo ...?
Vedi [questa risposta] (http://stackoverflow.com/questions/4232588/how-to-use-multiple-scanner-objects-on-system-in), penso che tu abbia il stesso problema. –