2016-05-29 19 views
0

Ich versuche zu drucken, wie viele Ziffern in einer ganzen Zahl gleichmäßig in die ganze Zahl teilen.In Java, versucht zu drucken, wie viele Ziffern in einer Ganzzahl gleichmäßig in die ganze Ganzzahl

Mit Mod 10 erhalte ich die letzte Ziffer der Ganzzahl, dann die Division um 10, um die letzte Ziffer zu entfernen, und schließlich die ganze Zahl um jede letzte Ziffer, um zu prüfen, ob jede Ziffer in die ganze Zahl teilbar ist. Aus irgendeinem Grund erhalte ich einen Fehler (https://repl.it/CWWV/15).

Jede Hilfe würde sehr geschätzt werden!

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int singleD, n1; 
    int counter = 0; 
    int t = in.nextInt(); 
    for(int a0 = 0; a0 < t; a0++){ 
     int n = in.nextInt(); 
     n1 = n; 
     while (n1 > 0){ 
      singleD = n1%10; 
      n1 /= 10; 
      if(singleD != 0 && n%singleD == 0){ 
       counter++; 
      } 
     } 
     System.out.println(counter); 
     counter = 0; 
    } 

} 

Edit: es funktioniert jetzt.

+2

Übrigens: Ihr Programm funktioniert einwandfrei. Ja; Auf der verlinkten Seite bekomme ich auch eine merkwürdige Fehlermeldung. Das ist definitiv ein Fehler dieser Seite - und nicht Ihres Programms. Weil das gut funktioniert. Ich würde Ihnen wirklich empfehlen, stattdessen eine Offline-IDE wie Eclipse zu verwenden. – AnnoSiedler

+0

@AnnoSiedler Ich schlage vor, Sie sehen die [Revisionshistorie] (http://stackoverflow.com/posts/37506571/revisions); OP hat meine Antwort eingebaut, um den geposteten Code zu korrigieren. –

+0

@ElliottFrisch yeah, ich habe Tests für Division durch Null hinzugefügt. – Avi

Antwort

2

Ich würde String.valueOf(int) verwenden und dann das in ein Zeichen-Array konvertieren. Als nächstes würde ich ein for-each loop verwenden, um jedes Zeichen iterieren und zu einer Ziffer für die Prüfung parse zurück, wenn der Rest 0 aus der Division mit dem ursprünglichen int ist und wenn ja, einen Zähler inkrementieren. Zeigen Sie schließlich die Anzahl an. So etwas wie,

Scanner in = new Scanner(System.in); 
int counter = 0; 
int t = in.nextInt(); 
for (char ch : String.valueOf(t).toCharArray()) { 
    if (ch != '0' && t % Character.digit(ch, 10) == 0) { 
     counter++; 
    } 
} 
System.out.println("count = " + counter); 

Erinnerung zu testen für 0 Division zu verhindern, indem 0.