2017-09-11 4 views
0

J'ai une question. Ce programme est supposé recevoir deux entiers R et L (tous les deux compris entre 1 et 1000) et calculer la surface et le volume d'un cylindre. Mon problème est que je continue à obtenir des erreurs d'exécution. Voici mon code:Erreur d'exécution Java pour le calcul de la zone et du volume du cylindre

import java.util.Scanner; 
public class Main 
{ 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int radius = input.nextInt(); 
     Scanner input2 = new Scanner(System.in); 
     int length = input2.nextInt(); 

     while ((radius > 1000) || (radius < 1)) 
     { 
      input = new Scanner(System.in); 
      radius = input.nextInt(); 
     } 

     while ((length > 1000) || (length < 1)) 
     { 
      input2 = new Scanner(System.in); 
      length = input2.nextInt(); 
     } 

     double area = (radius * radius) * 3.14159; 
     double volume = area * length; 

     System.out.printf("%.1f\n", area); 
     System.out.printf("%.1f\n", volume); 
    } 
} 

L'erreur que je reçois est:

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.nextDouble(Scanner.java:2413) at 
    Main.main(Main.java:10) 
+3

Quelles sont les erreurs d'exécution? Je n'en vois pas. –

+0

Bonjour Monsieur Prokhorov. Vous voulez dire que ce programme fonctionnerait et se terminerait correctement, n'est-ce pas? J'utilise actuellement un programme de notation que mon école utilise, et il dit qu'il y a une erreur d'exécution ... Plus précisément: Exception dans le fil "principal" java.util.NoSuchElementException \t at java.util.Scanner .throwFor (Scanner.java:862) \t à java.util.Scanner.next (Scanner.java:1485) \t à java.util.Scanner.nextDouble (Scanner.java:2413) \t à Main.main (Main.java:10) Qu'est-ce que cela signifie? Je vous remercie. – Sean

+3

Je veux dire "vous ne montrez pas ce que sont vos erreurs". Maintenant vous faites, mais vous devriez l'avoir inclus dès le début. –

Répondre

1

Avant d'appeler INTRES() sur l'entrée, vous devez vérifier si elle a une entrée. De même, vous n'avez pas besoin de réinitialiser l'entrée et l'entrée2 à chaque fois. En fait, vous devez utiliser une seule entrée Scanner

import java.util.Scanner; 
public class Main 
{ 

public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    int radius = 0; 
    if(input.hasNextInt()){ 
     radius = input.nextInt(); 
    } 
    int length = 0; 
    //Scanner input2 = new Scanner(System.in); 
    if(input.hasNextInt()){ 
     length = input.nextInt(); 
    } 
    while ((radius > 1000) || (radius < 1)) 
    { 
     // input = new Scanner(System.in); 
     if(input.hasNextInt()){ 
      radius = input.nextInt(); 
     } 
    } 

    while ((length > 1000) || (length < 1)) 
    { 
     //input2 = new Scanner(System.in); 
     if(input.hasNextInt()){ 
      length = input.nextInt(); 
     } 
    } 

    double area = (radius * radius) * 3.14159; 
    double volume = area * length; 

    System.out.printf("%.1f\n", area); 
    System.out.printf("%.1f\n", volume); 
    } 
} 
+0

cela a-t-il fonctionné pour vous @Sean? –