2017-07-07 1 views
-4

次のコードを試しましたが、うまくいきません。エラーの原因を確認してください。Javaで数字の回文を見つけるには?

import java.util.Scanner;//take input from the user 

public class Reverse { 

    private double ab; 
    public boolean check; 

    public static void main(String args[]) { 
     Scanner inp = new Scanner(System.in); 
     System.out.println("Enter s number"); 
     int num = 0; 
     int rnum = 0; 
     int pal; 
     for (num = inp.nextInt(), pal = num; num != 0; num = num % 10) { 
      rnum = rnum * rnum/10; 
     } 
     if (rnum ! pal) { 
      System.out.println("Palindrome"); 
     } else { 
      System.out.println("Not palindrome"); 
     } 
     public 

    static void dosomething() { 
     System.out.println("Thanks for calling"); 
    } 
} 

} 
+3

動作していないことを教えてください。 – AxelH

+0

助けを得るために[mcve]を提供する – Sharafat

+0

@Sharafat「私はいくつかの緊急の助けが必要です」[より緊急の助けが必要な場合はどのような状況で私の質問に「緊急」または他の同様のフレーズを追加することができます回答?](https://meta.stackoverflow.com/questions/326569/under-what-c​​ircumstances-may-i-addenturgent-or-other-similar-phrases-to-my-quest) –

答えて

1

私はいくつかの小さなエラーを見ることができます。たとえば、最後に迷う "public"キーワードがあります。これらはおそらく、使用しているIDEによって簡単にデバッグできます。

たとえば、あなたの番号が1であるかどうかわかる限り、forループはその上で余り演算子を使用し、1のままです。ループがどのようにチェックして、回文ですが、ここで私がお勧めです:

int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1)); 

  1. は10で割ることで切り捨て数(最後の桁)を保存し、この簡単なショートカットを使用して、最初の桁を保存し、whileループを構築

  2. 各ループは2つの数値を比較する必要があります。それらが等しいかどうかを確認し、whileループが終了してメッセージを送信しない場合は、別のメッセージを送信する必要があります。

それははるかに容易になるだろうとして、あなたは数学的な操作を必要と割り当てに作業しているならば、私はあなたを残しますが、また、あなただけの、そのように文字列にint型に変換し、その上で動作することができます詳細。

+1

ヒント:フォーマットコードをブロックするには、クォートブロックではなく、その前に4つのスペースインデントを使用します。実際の注文リストも用意されています。そのようなブロック内のコードは、正しくレンダリングするために8スペースインデントを使用する必要があります。 – halfer

+1

ありがとう!これは正直私の最初のコメントですので、私は有用なヒントを感謝します。 – TrigonDark

0

スニペットに不要なコードがたくさんあります。簡潔にするには、numberをループし、最後に数字を削り取り、新しいint、つまりreverseNumberとしてください。たとえば、

import java.util.Scanner; 
public class Reverse { 
    public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    int number = 0; 
    int reverseNumber = 0; 
    System.out.println("Enter a number"); 
    number = input.nextInt(); 
    System.out.print("Your number ("+number+") in reverse is: "); 
    while (number != 0) { 
     //Shave off one number here and attach it to reverseNumber 
     reverseNumber = (reverseNumber * 10) + (number % 10); 
     number = number/10; 
    } 
    System.out.print(reverseNumber); 
    } 
} 

このコードでは、任意の(正の)整数を入力し、その回文を受け取ることができます。

+0

文字列と同様にReveresする方法。 – Sharafat

+0

@Sharafat申し訳ありませんが、これはあなたの宿題を交換するものではありません。ショーイニシアチブといくつかの最初の試してみてください。 –

関連する問題