2016-03-28 7 views
0

Ich versuche herauszufinden, wie ich eine if-Anweisung erstellen kann, die wahr wäre, wenn das int int eine eingegebene Reihenfolge entspricht. Beispiel: Wenn der Wert int 745 ist, wird 754 oder 547 oder 457 als wahr zurückgegeben. Ich dachte darüber nach, sich in eine Zeichenkette zu verwandeln und dann jeden char-Wert zu extrahieren und die char-Werte hinzuzufügen, um daraus den Vergleichswert zu machen. Funktioniert das? Sorry, wenn die Frage dumm ist, ich bin neu in Java. Vielen Dank im VorausVergleichen eines int mit mehreren int in einer if-Anweisung

UPDATE

entwickelte ich einen Code, der, außer es funktioniert, wenn die Eingabe, zum Beispiel arbeitet, 647 und ich vergleiche es mit 638, da sie beide gleich haben char-Wert. Wie kann ich das beheben?

public int winAmount() 
 

 
{   
 
    
 
int prizeMoney = 0; 
 
String user = Integer.toString(userNumbers); 
 
String winning = Integer.toString(winningNumbers); 
 
int userValue = user.charAt(0)+user.charAt(1)+user.charAt(2); 
 
int winningValue = winning.charAt(0)+winning.charAt(1)+winning.charAt(2); 
 
    
 
if (betType.equalsIgnoreCase("Straight Bet"))  
 
    { 
 
    if (userNumbers == winningNumbers) 
 
    
 
    prizeMoney = 600 * betAmount; 
 
    
 
    else 
 
     
 
    prizeMoney = 0 ; 
 
    }  
 
    
 
else 
 
    { 
 
    if (userValue==winningValue) 
 
    { 
 
     if (user.charAt(0)==user.charAt(1) || user.charAt(0)==user.charAt(2) || user.charAt(1)==user.charAt(2)) 
 
    
 
     prizeMoney = 200 * betAmount; 
 
     
 
    
 
     else 
 
      
 
     
 
      prizeMoney = 100 * betAmount; 
 
     
 
    } 
 
    }  
 
     
 
    return prizeMoney; 
 
    
 
} 
 
    
 
}

+0

So ziemlich, wenn das Int eine "4" und "7" und "5" in irgendeiner Reihenfolge enthält? Ja, ändere einfach einen String und tue '.contains ('7') && .contains (5) ......' – 3kings

+1

* Das Hinzufügen von * Chars würde nicht funktionieren, da du nicht zwischen '34' unterscheiden kannst und '25'. –

+0

* "Wollte das funktionieren" * Es würde, würde aber viel mehr Werte erlauben, wie '835'. Was Sie tun möchten, ist dies: [Wie überprüft man, ob zwei Wörter Anagramme sind] (http://stackoverflow.com/q/15045640) (mit Zahlen, aber das ist das gleiche). – Tom

Antwort

2

Eine elegante und einfache Möglichkeit, Ihre int würde durch seine Ziffern zu sortieren. Sortieren Sie dann die anderen Ganzzahlen, mit denen Sie vergleichen möchten, auf die gleiche Weise.

Also, wenn Sie 74.442 haben, wenn Sie es sortieren finden Sie 24447.

Dann, wenn Sie mit einer anderen Zahl zu vergleichen, wie 47442 sortiert es 24447.

Schließlich wird, wenn die sortierten Werte sind gleich dann das ist es. (Dies wird eine einfache if-Anweisung sein)

Der folgende ist ein sehr einfacher Algorithmus, der eine ganze Zahl nach den Ziffern sortiert.

Alles, was Sie tun müssen, ist den Algorithmus zu extrahieren und in Ihrem eigenen Programm zu implementieren, was ein Kinderspiel sein sollte und ziemlich effizient, denke ich.

How to sort Integer digits in ascending order without Strings or Arrays?

0

der einfachste Weg ist es, die ganzen Zahlen in Strings zu drehen, die die Saiten nach lexikographischer Reihenfolge bestellen. und dann auf Gleichheit prüfen.

public boolean isValid(int a, int b); 
{ 
    string s1 = String.valueOf(a); 
    string s2 = String.valueOf(a); 
    java.util.Arrays.sort(s1.toCharArray()); 
    java.util.Arrays.sort(ss.toCharArray()); 

    boolean isValid = s1.equale(s2); 

    return isValid; 

}