2016-04-23 19 views
-3

Ich möchte ein Java-Programm schreiben, das zwei Ganzzahlen vom Benutzer liest, und zeigt dann alle Zahlen von der ersten Nummer bis zweite Nummer, die durch 5 oder 6, aber nicht beide teilbar sind. Der Ausgang sollte als zehn Zahlen pro Zeile angezeigt werden. Das ist, was ich habe, aber es funktioniert nicht .. kann jemand helfen?Wie kann ich dieses Programm richtig laufen lassen?

public class Testing { 
static int num1; 
static int num2; 
public static void main(String[] args) { 

    userInput(); 
    factorial(); 

} 

public static void userInput() { 
    Scanner sc = new Scanner(System.in); 

    System.out.println("Enter first number: "); 
    num1 = sc.nextInt(); 

    System.out.println("Enter second number: "); 
    num2 = sc.nextInt(); 
} 

public static void factorial() { 
    int n; 
    int counter = 0; 

    for (n = num1; n <= num2; n++) { 
     if ((n % 5 == 0 && n % 6 != 0) || (n % 6 == 0 && n % 5 != 0)) { 
      System.out.print(n + " "); 

      counter = counter++ % 10; 
      if (counter == 9) { 
       System.out.println(); 
      } 

     } 
    } 
} 
} 

Wenn ich diese ganzen Zahlen eingeben:

Enter first number: 
5 
Enter second number: 
90 

Das Programm zeigt, dass ich 10 pro Zeile wollen ..

5 6 10 12 15 18 20 24 25 35 36 40 42 45 48 50 54 55 65 66 70 72 75 78 80 84 85 
+5

Beschreiben Sie das Problem und zeigen Sie einige Stacktraces, etc. Wir haben nichts zu gehen von – Li357

+0

@AndrewL Ok Ich enthielt die Ausgabe – Stiller77

+0

Scheint gut zu mir – Li357

Antwort

2

Ihr Problem ist Ihre Zählvariable. Da Sie nur pro Zeile 10 Ergebnisse wollen, ist einmal Zähler größer oder gleich 9 sollten Sie die Zeile mit einem Println brechen() und dann Zähler stellen Sie sicher zurück auf 0. Siehe Code unten gesetzt:

public static void factorial() { 
int n; 
int counter = 0; 

for (n = num1; n <= num2; n++) { 
    if ((n % 5 == 0 && n % 6 != 0) || (n % 6 == 0 && n % 5 != 0)) { 
     System.out.print(n + " "); 

     counter++; 
     if (counter >= 9) { 
      System.out.println(); 
      counter = 0; 
     } 

    } 
} 
+0

Also wollte er 10 pro Zeile, der Fragesteller machte das nicht klar. – Li357

+0

Danke Senior @DeadCereal das Programm soll Nummern durch 5 oder 6 teilbar drucken. Es druckt immer noch beide – Stiller77

+0

@ Stiller77 Wie kommst du, bekomme ich die folgende Ausgabe von Ihrem Code: 5 6 10 12 15 18 20 24 25 65 66 70 72 75 78 80 84 85 Dies scheint die richtige Antwort zu sein. Keine dieser Zahlen ist durch 5 und 6 teilbar. Sowohl 30 als auch 90 fehlen beide in der Liste, weil sie beide durch 5 und 6 teilbar sind. – DeadCereal

Verwandte Themen