2016-09-18 7 views
0

私はこれがパリンドロームを見つける最も簡単な方法ではないことを知っています...しかし、整数の複数の文字列を単一のintに変換する方法があれば。たぶんそれは他人から単一の文字列を構築するでしょうか?私はあなたが入力した数字を逆にする出力を下に持っています。しかし、それは別々の整数の文字列として出てくる。これを1つのint型にキャストして元の数値と何らかの形でboolすることができますか? これに似た話題を見落としてしまった場合は、ごめんなさい。私は周りをチェックし、私の問題をはっきりと解決したものは見つけられませんでした。複数の文字列を1つに変換してから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型に変換し、その後 1固体の文字列に文字列(int型REV)(int型REV)(int型REV)(int型REV)を印刷から行くしようとしています。次に、(newInt == num1)文を実行します。

あなたは、文字列、int型の変換の頭痛ことなく、この道を行くことができ
+2

palindrome itdを探しているのなら、文字列として読み込むのが最善です。これにより、文字列の最大サイズまでの任意のサイズの "数値"を作成できます。しかし、このようにしたい場合は、 'String backwardsNum'を設定して文字列を連結することができます。したがって、 'backwardsNum + =/*ここに何が入っても* /' –

+0

palendromeを見つける最良の方法については、Michael Pickettと非常に同意します。 int型の複数の文字列についてのあなたの質問については、あなたが望むものについてもっと明確にする必要があります。少なくともサンプル入力と、出力が期待されるものを入力してください。前述のように、これは混乱しています。 – nhouser9

+0

「0」桁には注意してください。あなたは数字を逆転しようとしているようですが、 '10'の逆は' 01'ではなく '1'です。結果に先行ゼロを記憶させたい場合は、実際には数値ではなく文字列として行う必要があります。 – Andreas

答えて

1

:あなたは使用することができ、そう

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); 
} 

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

、ありがとう@アンドレアス – Shahid

0

簡単には、以下の方法が様々なステップを実行するためにグアバを使用していますあなたのコードで同じテクニックを使用します。先頭に空のリストを作成し、各解析された整数をリストの末尾に追加します。しかし、毎回10を掛けた固定数列を持つモジュラス演算子を使用する方法は制限されています。あなたは、この解析方法を使用したい場合は代わりに、代わりにループを考えてみましょう。そして、

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)); 

そして、元の番号と等しいかどうかを確認してください。

関連する問題