2017-12-05 3 views
2

Ich bin ein Anfänger Java-Programmierer, studierte grundlegende Youtube-Videos und Überlauf-Foren, und ich stieß auf eine Frage auf einem Lehrbuchblatt, das mich gebeten, ein for-Schleife-Programm und drucken sie in dieser Tabelle sowie füllen in jedem RohlingWie kann ich eine Formel in einer For-Schleife in Java verwenden?

Number Square Cube (n+1)/(2n-18) 
______________________________________ 
1   #  #   # 
2   #  #   # 
3   #  #   # 
4   #  #   # 
5   #  #   # 

ich dachte, ich sollte es ausprobieren, mich zu testen. Ich habe das folgende Programm entwickelt, das perfekt für den Zahlen-, Quadrat- und Würfel-Teil der Tabelle funktioniert, aber ich verstehe nicht, wie man die Zahlen mit der gegebenen Formel erzeugt. Die Formel I, die als Variable (doppelt) initialisiert wurde, druckt die tatsächlichen Ergebnisse nicht, und ich habe ehrlich gesagt keine Ahnung, was zu tun ist. Ich würde eher eine einfache Erklärung als eine komplexe und einfache Änderungen am Code eher als komplex. Wie gesagt, ich bin ein Anfänger und viele verschiedene Methoden können direkt über meinen Kopf gehen. Vielen Dank im Voraus (auch eine zusätzliche Aufgabe verlangt, dass ich die Summen jeder Spalte ausdrucke. Ich weiß nicht, wie ich das überhaupt machen soll und möchte gerne eine Erklärung, aber ich hätte nichts dagegen, wenn ich mich nicht anhöre ‚t on) erhalten

int number; 
int maxValue; 

Scanner keyboard = new Scanner(System.in); 
System.out.println("how many numbers do you want the max value to be"); 
maxValue = keyboard.nextInt(); 

System.out.println("Number\tSquare\tCube (n+1)/(2n-18)"); 
System.out.println("--------------------------------"); 
for (number = 1; number <= maxValue; number++) { 
    double formula = (number + 1)/(number * 2); 
    System.out.println(
     number + "\t\t\t" + number * number + "\t\t\t" + 
     number * number * number + "\t\t\t" + formula); 
} 
+0

Was meinst du mit „Die Formel (...), um die tatsächlichen Ergebnisse nicht gedruckt“? Was ist der tatsächliche Output und was hast du erwartet? Für den Anfang könnten Sie versuchen, eine 'private' Methode zu erstellen (nennen Sie sie zum Beispiel' calculateFormula'), die als Argument Ihre 'Zahl' erhalten und das erwartete' double' zurückgeben würde. – aribeiro

Antwort

2

Ihre Formel stimmt nicht mit dem Lehrbuch überein. Versuchen Sie folgendes:

System.out.println("Number\tSquare\tCube (n+1)/(2n-18)"); 
System.out.println("--------------------------------"); 

for (int number=1; number <= maxValue; number++) { 
    double square = Math.pow(number, 2); 
    double cube = Math.pow(number, 3); 
    double formula = (number + 1)/(number * 2 - 18); 
    System.out.println(number + "\t\t\t" + square + "\t\t\t" + cube + "\t\t\t" + formula); 
} 

Hinweis: Wie @MauricePerry eine Eingabe von 9 wies darauf hin, würde durch Null eine Kluft führen. Anstatt zu versuchen, diese ungeprüfte Ausnahme abzufangen, sollten Sie Ihre Eingabewerte kontrollieren, damit dies nicht geschieht.

+0

Ausnahme bei Nummer == 9 –

3

sollte Ihre Formel:

double formula = (double)(number + 1)/(number * 2 - 18); 

Zwei Fragen:

  • fehlt -18
  • das/ist, eine ganze Zahl zu tun es sei denn, Sie werfen mindestens einen Operanden in ein Doppel

Oh! noch eine Sache: wenn Nummer == 9, gibt es eine Division durch Null. Eine doppelte Division gibt Ihnen "Infinity", während eine ganzzahlige Division eine Ausnahme auslöst.

1

Ihre Formel ist nicht korrekt und Sie vermissen einige \ t.

int number; 
    int maxValue; 

    Scanner keyboard = new Scanner(System.in); 
    System.out.println("how many numbers do you want the max value to be"); 
    maxValue = keyboard.nextInt(); 

    System.out.println("Number\t\tSquare\t\tCube \t\t(n+1)/(2n-18)"); 
    System.out.println("-------------------------------------------------------"); 
    for (number = 1; number <= maxValue; number++) { 
     double formula = (number + 1)/(number * 2 - 18); 
     System.out 
       .println(number + "\t\t" + number * number + "\t\t" + number * number * number + "\t\t" + formula); 

    } 
+2

Ausnahme bei Nummer == 9 –

+1

Ja, man muss damit umgehen. Es ist nicht klar, was dort gedruckt werden soll. – vinS

1

Ich bin nicht sicher, welche Ausgänge sind Sie immer, aber es scheint mir, sind Sie integer division verwenden, wenn sie versuchen das Ergebnis von (n + 1)/(2n-18) zu erhalten.

Versuchen Sie es mit:

double decimalNumber = (double) number; 
double formula = (decimalNumber + 1)/(decimalNumber * 2 - 18); 
Verwandte Themen