Ich mache dieses Programm in der Lage sein, faktorials zu berechnen. Ich brauche es, um einen Satz zu sagen, wenn sie einen Wert über 20 eingeben, aber ich habe eine Endlosschleife erstellt. Meine Linie, die sagtWie repariere ich diese unendliche while Schleife
System.out.print ("ERROR: The result is inaccurate because the number was too large for the data type");}
Ist eine Endlosschleife. Ich kann nicht herausfinden, wie ich es beheben kann. Ich habe versucht, die Platzierung der Dinge zu verschieben, aber ich kann es nicht herausfinden. Jede Hilfe wird geschätzt.
import java.util.Scanner;
import java.text.NumberFormat;
public class FactoralApp
{
public static void main(String[] arge)
{
//Welcome users the the application and get user input
System.out.print("Welcome to the Factoral Calculator" + "\n");
int num;
Scanner sc = new Scanner(System.in);
String choice = "y";
while (choice.equalsIgnoreCase("y")) { //set up the while loop so that users can find many factorials
long factorial=1; //initialize variables
System.out.print("\n" + "Enter an integer between 1 and 20: "); //promt users for input
num = sc.nextInt();
for (int i = num; i >= 1; i--){ //Calculate factorial
factorial = factorial * i;}
while (num > 20) {
System.out.print ("ERROR: The result is inaccurate because the number was too large for the data type");}
// Format and display the results
NumberFormat number = NumberFormat.getNumberInstance();
String message =
("\n" + "The factoral of " + num + " is " + number.format(factorial) + "." + "\n"); //create message
System.out.println(message); // Output the formated message
System.out.print ("Continue (y/n): "); //promt users for input
choice = sc.next();
} // End While
} // End main()
} // End Class
Der erste Schritt in die Lösung Ihres Problems wird Ihr Problem zu isolieren, was bedeutet, es ist Zeit zu Führen Sie ein ernstes Debugging durch, entweder mit einem Debugger, der es Ihnen erlaubt, Ihren Code durchzugehen und Variablen zu analysieren, während das Programm fortschreitet, oder mit einem Logger oder mit einem "arge man's debugger" - eine Menge println-Anweisungen, die den Variablenstatus offenlegen wie das Programm fortschreitet. Viel Glück! –
Wollten Sie 'if' anstelle von' while' verwenden? –
Welche Variable checken Sie in Ihrer booleschen Bedingung ein? Weiter - bist du ** Ändern Sie die Variable irgendwo innerhalb der While-Schleife ** ??? Wenn nicht, ändern Sie num nie innerhalb der Schleife, dann ändert sich das boolesche Testergebnis der while-Schleife ** nie ** und die Schleife wird niemals enden. Dies ist keine Programmierfrage, sondern eine einfache logische Frage. –