2016-09-18 77 views
0

我知道這不是尋找回文的最簡單方法......但我希望有人會告訴我是否有一種方法可以將多個整數字符串轉換爲一個int 。也許這從別人建立一個單一的字符串?在下面我有一個輸出可以反轉你輸入的數字。然而,它是作爲一個單獨的整數串而出現的。我能夠將這個變成單​​個int,然後以某種方式將它與原始數字相比較嗎? 如果我忽略了與此類似的話題,我很抱歉。我檢查了一下,沒有發現明確解決了我的問題。將多個字符串轉換爲一個然後解析爲int

import java.util.Scanner; 

public class Palindrone{ 

    public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

    System.out.print("Enter an integer between 2 and 6 digits:"); 
    int num1 = input.nextInt(); 

    int rev = 0; 
    //find last number 
    if(num1 >= 10){ 
    rev = num1%10; 
    System.out.print(rev); 
    } 
    //find 2nd to last and 3rd from last 
    if(num1 >= 100){ 
    rev = num1%100/10; 
    System.out.print(rev); 
    rev = num1%1000/100; 
    System.out.print(rev); 
    } 
    //find 4th from last 
    if(num1 >= 1000){ 
    rev = num1%10000/1000; 
    System.out.print(rev); 
    } 
    //find 5th 
    if(num1 >= 10000){ 
    rev = num1%100000/10000; 
    System.out.print(rev); 
    } 
    //find 6th 
    if(num1 >= 100000){ 
    rev = num1%1000000/100000; 
    System.out.print(rev); 
    } 
}  
} 

我試圖從打印字符串(INT REV)(INT REV)(INT REV)(INT REV)去 一個堅實的字符串,然後轉換成int。然後如果(newInt == num1)運行語句。

+2

如果尋找回文itd prolly最好作爲字符串讀入。這可以讓你做任何大小的「數字」,直到字符串的最大大小。但如果你想這樣,你可以有一個'返回字符串'然後連接字符串。所以'backwardsNum + =/*無論怎樣在這裏* /' –

+0

非常贊同邁克爾皮克特關於尋找一種綜合徵的最佳方式。至於你關於int的多個int串的問題......你需要更清楚你想要什麼。請至少提供一個示例輸入以及您期望輸出的內容。如上所述,這是令人困惑的。 – nhouser9

+0

小心'0'數字。你似乎試圖扭轉一個數字,但'10'的相反是'1',而不是'01'。如果你想讓結果記住前導零(從輸入的尾部零開始),你真的需要把它做成字符串,而不是數字。 – Andreas

回答

1

你可以走這條路沒有串-INT轉換頭痛:

Scanner input = new Scanner(System.in); 
System.out.print("Enter an integer between 2 and 6 digits: "); 
String number = input.next();   
System.out.println(new StringBuilder(number).reverse()); //prints reverse number 
+0

您在技術上不需要在'println()'調用中使用'toString()'。 'println(Object)'會爲你調用'toString()'。 – Andreas

+0

對,謝謝@Andreas – Shahid

0

簡單,下面的方法使用番石榴執行的各個步驟:

public static boolean palindrome(int number) { 
    // Split into an array of digits and reverse 
    List<String> digits = Lists.transform(
      Lists.reverse(
        Lists.transform(
          Lists.transform(
            Lists.charactersOf(Integer.toString(number)), 
            Functions.toStringFunction()), 
          Ints.stringConverter())), 
      Ints.stringConverter().reverse()); 

    // Join the strings and parse to an integer 
    int result = Integer.parseInt(Joiner.on("").join(digits)); 

    // And check if a palindrome 
    return (result == number); 
} 

所以,你可以使用如果您在開頭創建空列表,並將每個已分析的整數添加到列表的末尾,則可以使用與您的代碼相同的技術。然而,使用模數運算符時,每次乘以固定的數字序列的方式是有限的。相反,如果你想用此分析方法,考慮一個循環,而不是:

List<Integer> digits = Lists.newArrayList(); 
while (number > 10) { 
    int digit = number % 10; 
    digits.add(digit); 
    number /= 10; 
} 

然後扭轉和變換回字符串列表,並轉換爲整數:

List<String> strings = Lists.transform(
     Lists.reverse(digits), 
     Ints.stringConverter().reverse()); 
int result = Integer.parseInt(Joiner.on("").join(strings)); 

而且又剛剛檢查與原始號碼是否相等。

相關問題