2013-08-09 7 views
0

J'écris du code qui devrait créer une boucle infinie, mais qui se termine actuellement de façon inattendue. Lorsque je tape 'Y' pour oui ou 'N' pour non, ce code doit entrer une boucle sans fin.Ecriture d'une boucle infinie

import java.util.Scanner; 
import java.text.NumberFormat; 
import java.text.DecimalFormat; 

public class Math_Island_XTENDED_Final 
{ 
    static Scanner sc = new Scanner(System.in); 
    static Scanner keyboard = new Scanner(System.in); 

    public static void main(String[] args) 
    { 
     //Declarations 
     int Bignumber; 
     int Mednumber; 
     int Smallnumber; 
     double addition; 
     double subtraction; 
     double multiplcation; 
     double division; 
     double sphere_radius1; 
     double sphere_radius2; 
     double sphere_radius3; 
     double rectangle_measurements; 
     char repeat; 
     String input; 

     System.out.println("Welcome to Math Island :D ! "); 
     System.out.println("We will use some numbers for our Formula ! "); 
     System.out.println("1 rule, NO DECIMALS !! "); 
     System.out.println("Please Pick a # from 1 to 100 NOW!! "); 
     Bignumber = sc.nextInt();   
     System.out.print("Please Pick a # from 1 to 20 NOW!! "); 
     Mednumber = sc.nextInt(); 
     System.out.print("Please Pick a # from 1 to 5 NOW!! "); 
     Smallnumber = sc.nextInt(); 

     //Results 

     addition = Bignumber + Mednumber + Smallnumber; 
     subtraction = Bignumber - Mednumber - Smallnumber; 
     multiplcation = Bignumber * Mednumber * Smallnumber; 
     division = Bignumber/Mednumber/Smallnumber; 
     sphere_radius1 = Bignumber * 3.14 * 3.14; 
     sphere_radius2 = Mednumber * 3.14 * 3.14; 
     sphere_radius3 = Smallnumber * 3.14 * 3.14; 
     rectangle_measurements = Bignumber * Mednumber * Smallnumber; 
     System.out.println(); 
     System.out.println(); 

     //results 2 
     System.out.println(" Your addition answer would be " + addition); 
     System.out.println(" Your subtraction answer would be " + subtraction); 
     System.out.println(" Your multiplcation answer would be " + multiplcation); 
     System.out.println(" Your division answer would be " + division); 
     System.out.println(" Your first sphere answer would be " + sphere_radius1); 
     System.out.println(" Your second sphere answer would be " + sphere_radius2); 
     System.out.println(" Your third sphere answer would be " + sphere_radius3); 
     System.out.println(" Your recangle size would be " + rectangle_measurements+ " in cubic Feet"); 
     System.out.println(); 
     System.out.println(); 
     System.out.println("Would you like to Play again ? "); 
     System.out.println("Y for yes, & N for no "); 

     input = keyboard.nextLine(); 
     repeat = input.charAt(0); 

     while (repeat == 'Y'); 
      System.out.println(); 

     while (repeat == 'N'); 
      System.out.println(); 
     System.out.println("Goodbye!"); 
    } 
} 
+0

L'écriture d'une boucle infinie n'est pas difficile. Il suffit d'écrire 'while (true) {}' – Bart

Répondre

1

encase le code entier dans une boucle while

définie comme une valeur booléenne repeat avant le tout en boucle définie comme vraie

Remplacez ensuite

while (repeat == 'Y') { 
     System.out.println(); 
} 

while (repeat == 'N') { 
     System.out.println(); 
    System.out.println("Goodbye!"); 

} 

avec une déclaration if qui vérifie si l'entrée utilisateur est « n », auquel cas le changement repeat False. Sinon, gardez repeat comme vrai.

beaucoup aussi- d'erreurs de syntaxe dans le code- nettoyer les et vous devriez être bien

3

Vous avez des points-virgules après votre temps boucles:

while (repeat == 'Y'); // <-- Right here 
     System.out.println(); 

Si vous le retirez, vous devriez obtenir une boucle infinie si repeat == 'Y' est vrai.

La même chose vaut pour l'autre boucle. Assurez-vous que vous utilisez des accolades autour du code que vous voulez faire une boucle sur:

while (repeat == 'Y') 
     System.out.println(); 


while (repeat == 'N') { 
     System.out.println(); 
     System.out.println("Goodbye!"); 
} 

Si vous souhaitez utiliser la boucle pour jouer à nouveau le jeu, je vous conseille d'utiliser une boucle do/while, puisque vous voulez jouer à moins une fois:

do { 

     System.out.println("Welcome to Math Island :D ! "); 
     System.out.println("We will use some numbers for our Formula ! "); 
     System.out.println("1 rule, NO DECIMALS !! "); 
     System.out.println("Please Pick a # from 1 to 100 NOW!! "); 
     Bignumber = sc.nextInt();   
     System.out.print("Please Pick a # from 1 to 20 NOW!! "); 
     Mednumber = sc.nextInt(); 
     System.out.print("Please Pick a # from 1 to 5 NOW!! "); 
     Smallnumber = sc.nextInt(); 

     //Results 

     addition = Bignumber + Mednumber + Smallnumber; 
     subtraction = Bignumber - Mednumber - Smallnumber; 
     multiplcation = Bignumber * Mednumber * Smallnumber; 
     division = Bignumber/Mednumber/Smallnumber; 
     sphere_radius1 = Bignumber * 3.14 * 3.14; 
     sphere_radius2 = Mednumber * 3.14 * 3.14; 
     sphere_radius3 = Smallnumber * 3.14 * 3.14; 
     rectangle_measurements = Bignumber * Mednumber * Smallnumber; 
     System.out.println(); 
     System.out.println(); 

     //results 2 
     System.out.println(" Your addition answer would be " + addition); 
     System.out.println(" Your subtraction answer would be " + subtraction); 
     System.out.println(" Your multiplcation answer would be " + multiplcation); 
     System.out.println(" Your division answer would be " + division); 
     System.out.println(" Your first sphere answer would be " + sphere_radius1); 
     System.out.println(" Your second sphere answer would be " + sphere_radius2); 
     System.out.println(" Your third sphere answer would be " + sphere_radius3); 
     System.out.println(" Your recangle size would be " + rectangle_measurements+ " in cubic Feet"); 
     System.out.println(); 
     System.out.println(); 
     System.out.println("Would you like to Play again ? "); 
     System.out.println("Y for yes, & N for no "); 

     input = keyboard.nextLine(); 
     repeat = input.charAt(0); 

} while (repeat == 'y'); 

System.out.println("Goodbye!");* 
1

Prenez tout le code que vous voulez répéter et de le mettre à l'intérieur de sa propre fonction:

void myMathGame() { 
    //code for one round: setup, get user input, calculate values, print them 
} 

Ensuite, construisez simplement une boucle infinie inconditionnelle à l'intérieur de votre fonction principale que vous cassez si l'utilisateur ne veut pas d'autre tour:

public static void main(String[] args) { 
    while (true) { 
     myMathGame(); 

     System.out.println("Would you like to Play again? (Y/N) "); 
     if (keyboard.nextLine().charAt(0) != "Y") { 
      break; 
     } 
    } 
}