我正在爲學校寫作業的代碼,但它需要我比較兩個int值。例如,如果您的號碼是123,另一個號碼是321,則它們的數字相同,但順序不同。有比較它們的簡單方法嗎?還是必須將它們變成字符串並將它們作爲字符串類型進行比較?如果它的後者,我怎麼能比較兩個字符串?沒有任何數組的方法嗎?如何比較Java中INT值中的數字?
回答
通過比較int值,如果你的意思是大於,小於或等於你可以這樣做。
int a = 123, b= 321;
if(a > b)
//a is greater than b (b is less than a)
if(a == b)
// a is equal to b
if(a < b)
// a is less than b (b is greater)
可以使用一些澄清,如果要檢查,如果像你的例子表示,其稱爲迴文數是相反的。
如果您有以下代碼段中的循環和模數(%)的經驗,那麼您可以在以下版本中將數字取反。
int r = 0;
while(number != 0){
r = r * 10 + number % 10;
number /= 10; }
return r;
r將數字顛倒。如果你輸入123我們會回321,那麼你可以將它與另一個比較,看看它是否相反。
讓我知道如果您有任何更多的問題,我會盡力回答!
要檢查一個數字是否被任意混合,並且沒有反轉爲中獎號碼,可以嘗試以下操作。
兩個數字a和b,a是中獎號碼,b是用戶選擇的號碼。 a是251,b是521.
你可以在每個數字上做這件事來分開它們。
int p1,p2,p3;
p1 = num % 10;
p2 = num/10 % 10;
p3 = num/100 % 10;
這將分開前。 251到2,5,然後是1.然後,你可以添加他們,因爲這樣做第二個相同的過程。對於第二個數字,和爲p1 + p2 + p3,sum2爲p4 + p5 + p6。只要這些數字不會顛倒。使用我之前提到的那種情況來檢查它們是否被翻轉。
if(sum == sum2)
//Numbers are mixed but you won!
這應該有效。
我看到這可以幫助我,但我需要一種方法來比較數字,即使他們沒有被反悔,該任務需要比較2個數字,所以如果玩家數量是523和中獎號碼是253,(它的任意混合和不顛倒)你會贏,或者423和342。 –
@ RafaelLeal-Mccormack檢查我的答案。認爲應該工作。 –
太棒了。很高興幫助。幫我一個忙,接受我的答案(點擊複選標記)!快樂的編碼。 –
請嘗試下面的代碼(我測試過了),其中的想法是從here和here借來的。該解決方案仍然使用數組。
public class CompareInt {
public static void main(String[] args) {
System.out.println(containSameDigits(123, 123));
System.out.println(containSameDigits(123, 321));
System.out.println(containSameDigits(123, 132));
System.out.println(containSameDigits(123, 323));
System.out.println(containSameDigits(123, 124));
System.out.println(containSameDigits(123, 111));
}
public static boolean containSameDigits(int x, int y) {
String xSorted = getSortedString(x);
String ySorted = getSortedString(y);
return xSorted.equalsIgnoreCase(ySorted);
}
public static String getSortedString(int x) {
String xSorted = "";
for (int digit = 0; digit < 9; digit++) {
for (int temp = x; temp > 0; temp /= 10) {
if (temp % 10 == digit) {
xSorted += digit;
}
}
}
return xSorted;
}
}
輸出:
true
true
true
false
false
false
爲了兌現@ruakh,我將函數名改爲'containsSameDigits' :-) –
我會使用一個數組,但這個任務要求我們在沒有數組的情況下完成任務,教授還沒有教過數組。 –
@RicardoRigaroni的解決方案也很優雅,但我的解決方案可以處理比較123和420(應該返回false)的情況。 –
當然不是最快的解決方案,但代碼很短,很容易理解。
public boolean arePalindromes(int a, int b){
//convert them to char arrays for easy sorting
char[] aryA = String.valueOf(a).toCharArray();
char[] aryB = String.valueOf(b).toCharArray();
//sort them
Collections.sort(aryA);
Collections.sort(aryB);
//put them back to strings for easy comparison
String strA = new String(aryA);
String strB = new String(aryB);
//compare
return strA.equals(strB);
}
- 1. 如何比較int中的int數組
- 2. 比較int中的java
- 3. 比較Android中的int值
- 4. 如何比較int值?
- 5. 比較int值
- 6. 如何比較GUID值int值?
- 7. 效率:Java中的UUID與int比較
- 8. 如何比較java中的字符?
- 9. 比較tsql中的兩個int值
- 10. 如何比較字典中的值?
- 11. 如何比較列表中的值與java中的參數?
- 12. 比較比較Int
- 13. 如何比較CombinedResponse對象值與int?
- 14. 如何比較數組中的數字
- 15. 比較Java中的2個數字
- 16. 將int值與Java中的不同類型進行比較
- 17. 如何比較數組中的值
- 18. Java:將比較計數返回爲int的字符串比較庫?
- 19. 將int與Java中的字符常量進行比較
- 20. 比較j2me中的兩個int數組?
- 21. 將int與數組進行比較java
- 22. 如何比較查詢中的MySQL int值而不提取它
- 23. 如何比較Perl中的字母數字值?
- 24. 在循環中比較字符與int
- 25. 如何比較PHP中的大數字?
- 26. 如何在java中比較兩個數字字符串
- 27. 如何比較'int'數與張量[0]
- 28. 在java中字中字比較
- 29. 比較數組中的值
- 30. PHP字符串 - INT比較
你的方法有什麼返回類型和返回值? (你打算如何表達「他們有相同的數字,但在不同的順序」作爲一種方法的結果?) – ruakh
我的返回類型是無效的,即時猜測它想要我返回一個字符串。我在方法體內做了一個if-else語句。該項目的重點在於製作一種投注遊戲,您可以在其中輸入數字和您想要下注的遊戲類型。如果數字的順序相同,您贏得的獎金最多,並且您可以直接下注,所以我擁有if(賭注類型)。equalsIgnorecase(「直接投注」)以及如果(玩家號碼==獲勝號碼)玩家獲勝,否則他們將失敗。現在我需要做一個if語句,當數字出現錯誤但相同時,但我不知道如何 –
所以,你只是想寫一個形式爲'boolean containsSameDigits(int a,int b )'檢查兩個整數是否包含相同的數字(但可能是以不同的順序)? – ruakh