2017-12-17 18 views
-1

Ich mache eine Methode einer Klasse, die zwei ganze Zahlen als Argumente verwendet. Es prüft jede einzelne Ziffer der ersten und stellt sicher, dass sie kleiner oder gleich der zweiten ist.Java: Überprüfen Sie, ob jede einzelne Ziffer einer Zahl in einem Bereich liegt

public static boolean digitRange(int x, int limit) { 
    String number= Integer.toString(x); 
    char[] digits=number.toCharArray(); 
    boolean result=false; 
    for(char c: digits) { 
     if(Integer.parseInt(String.valueOf(c))>limit) { 
      result=false; 
     } 
    } 
    return result; 
} 

Die erwartete Ausgabe für etwa 0 und 5 wäre:

public static void main(String[] args){ 
    System.out.println(digitRange(0,5));//0 is les than or equal to 5. 
             //Therefore true is printed. 
} 

Allerdings bin ich in jedem einzelnen Szenario falsch bekommen und ich kann, warum nicht finden. Könnte mir bitte jemand helfen, die digitRange-Methode zu korrigieren.

Antwort

1
String number= Integer.toString(x); 
char[] digits=number.toCharArray(); 
boolean result=false; 
for(char c: digits) { 
    if(Integer.parseInt(String.valueOf(c))>limit) { 
     result=false; 
    } 
} 
return result; 

Sie setzen nie result zu true überall. Wechseln Sie in

boolean result=true; 

Allerdings betrachten einen völlig anderen Ansatz:

public static boolean digitRange(int x, int limit) 
{ 
    int t = Math.abs(x); 
    while (t > 0) 
    { 
     if (t % 10 > limit) 
      return false; 
     t /= 10; 
    } 
    return true; 
} 
1

Sie nie den Ergebniswert auf true gesetzt. Kehren Sie einfach zurück, sobald Sie falsch festgestellt haben, da Sie nicht mehr überprüfen müssen, und wenn Sie aus der Iteration herauskommen, kehren Sie zu True zurück.

public static boolean digitRange(int x, int limit) { 
    String number= Integer.toString(x); 
    char[] digits=number.toCharArray(); 

    for(char c: digits) { 
     if(Integer.parseInt(String.valueOf(c))>limit) { 
      return false; 
     } 
    } 
    return true; 
} 
0

Die Funktion akzeptiert zwei Zahlen und prüft jede Stelle im Bereich der zweiten Zahl ist und wahr zurück, wenn alle Ziffern sind kleiner als die zweite Zahl oder es gibt false zurück.

public boolean check(int one,int two){ 
    while(one>0){ 
     if(one%10>two) 
      return false; 
     one=one/10; 
    } 
    return true; 
} 
Verwandte Themen