2012-11-05 2 views
1

두 가지 방법을 쓰고 있습니다. 하나는 public static int (int number)를 사용하는 반전 방법이고 다른 하나는 public static boolean isPalindrome (int number)을 사용하는 Palindrome 메소드입니다. 나는 2 시간 동안이 일을하고 있었고 솔직히 엉망이었습니다. 나는 내 숙제가 끝나기를 요구하지 않고, 여기서 어디로 가야하는지 이해하는 데 도움이됩니다. 감사. 현재 코드는 다음과 같습니다.Java 프로그램 번호 바꾸기 및 회상록인지 확인하기 숙제로

public class Exercise 
{ 
    public static void main(String[] args) 
    { 

     System.out.println("Please enter an integer. "); 
     Scanner input = new Scanner(System.in); 
     int number = input.nextInt(); 
     boolean Final = isPalindrome(number); 
     System.out.println(Final); 

    } 

    public static int reverse(int number) 
    { // missing return? 
     int y; 
     int n; 
     for (n = 0; n <= number; n++) 
     { // parameters 
      y = number % 10; // remainder 
      number = number/10; // gets rid of last digit 
      n = n * 10 + y; // sets reverse values 

      return n; // returns reversed number 
     } 
    } 

    public static boolean isPalindrome(int number) 
    { 
     int n = reverse(number); // call reverse method 
     boolean result; // declare result 
     if (n = number) 
     { // incompatible types? 
      result = true; 
      System.out.println("The number " + number + " is a " + "Palindrome" + "."); 
     } 
     else if (n != number) 
     { 
      result = false; 
      System.out.println("The number " + number + " is a Palindrome" + "."); 
     } 
     return result; // not initialized? 
    } 
} 
+0

게시 된 코드에 들여 쓰기가 로직과 일치하지 않습니다. 이로 인해 문제를 발견하기가 더 어려워 질 수 있습니다. 그것이 작업 복사본에서 그런 식이면, 내가 할 첫 번째 일은 그것을 IDE에로드하고 다시 포맷하는 것입니다. –

+2

컴파일도됩니까?(n = 숫자)는 유효한 부울 표현식이 아닙니다. – Vikdor

+0

당신은 어떤 부분에 붙어 있습니까? – MadProgrammer

답변

3

귀하의 return n;for 루프 안에 있습니다. 중괄호를 위에 올려 놓으십시오.

또한, while (number > 0) {

for 루프를 변경하고 (n = number) 또한

(n == number)에, isPalindrome에서 두 번째로 if 조건을 삭제하고, 당신이 그것을 필요하지 않습니다 변경할 수 있습니다. else을 넣으십시오. 그러면 컴파일러가 return result;에 도달 할 수 없다는 것을 알려줍니다 ... 그냥 삭제하십시오.

+0

그리고 (n = 번호) 대신 ==를 사용해야하는 경우 = – arajek

+0

고맙습니다. 달릴 수있었습니다. 많은 감사. 내 부분에 너무 많은 바보 같은 실수. – BraxtonLanc

1

역 논리 문제.

는이

public static int reverse(int number) 
     { 
      int result = 0; 
      int remainder; 
      while (number > 0) 
      { 
       remainder = number % 10; 
       number = number/10; 
       result = result * 10 + remainder; 
      } 

      return result; 
     } 
+0

및 if 조건을 if (n == number) – kjana83

1

그것은 IMO 회문에 대한 문자열 작업을 쉽게하려고합니다.

souce에 게시물 : How do you determine if a String is a palindrome?

코드와
int someNumber = 12321; 
String palindrome = someNumber+""; 
boolean isPalindrome = palindrome.equals(new StringBuilder(palindrome).reverse().toString()); 

, 그것은 다음과 같습니다

public static void main(String[] args) 
{ 

    System.out.println("Please enter an integer. "); 
    Scanner input = new Scanner(System.in); 
    int number = input.nextInt(); 
    String palindrome = number+""; 
    boolean result = palindrome.equals(new StringBuilder(palindrome).reverse().toString()); 
    System.out.println(result); 

} 
1

/* 회문 프로그램이 방법을 사용하고 인터페이스 */

import java.util.Scanner; 

interface Test // All methods inside interface are treated "Public" 
    {     // and abstract in nature by default 
String getInput(); 
boolean IsPalindrome(String s); 
void displayInput(); 
     } 

    abstract class Sub_Test implements Test 
     { 
    public String getInput() 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter a String "); 
     String str = scan.nextLine(); 
     return str; 
    } 
    public boolean IsPalindrome(String s) 
     { 
     int limit = s.length() - 1; 
     char st1 [] = s.toCharArray(); 
    Inner:for(int i = 0,j = limit; i < j ; i++,j--) 
     { 
      if(st1[i] == st1[j]) 
       return true; 
      else 
       break Inner; 
     } 
       return false; 
    } 
      public void displayInput() 
      { 
     String input = getInput(); 
     boolean word = IsPalindrome(input); 
     if(word) 
     System.out.println("Given String "+input+" is palindrome "); 
     else 
     System.out.println("Given String "+input+" is NOT palindrome "); 
       } // End of displayInput() method 

      } // End of Sub_test abstract class 

    public class String_Session1 extends Sub_Test { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    String_Session1 object = new String_Session1(); 
    object.displayInput(); 
} 
      } // End of String-Session1 Main class 

/* 출력은 다음과 같습니다. */

Enter a String 
    Race CAR 

    Given String Race CAR is palindrome 
0

숫자 회문문을 작성하는 경우. 주요 방법

부울 방법

public static boolean ispalindrome(int number) 
    { 
     int num=reverse(number); 
     boolean res; 
     if (num == number){ 
      res=true; 
     System.out.println("The Entered number "+number+ " is a palindrome");} 
     else { 
      res=false; 
      System.out.println("The Entered number "+number+" is not a palindrome");} 
     return res; 
    } 

,

boolean Res=ispallindrome(number); 

는 상태를 확인하는 데 사용할 수 있습니다 여기에 끝입니다.

0

수학 함수를 통해 숫자의 자릿수를 얻은 다음 다음과 같이 '/'및 '%'연산을 사용하여 반복합니다. x = (x % divider)/10 이후에 우리는 2 개의 제로 연산을했기 때문에 divider를 100으로 나누어야합니다.

public static boolean isPalindrome(int x) { 
     if (x < 0) return false; 
     if (x < 10) return true; 

     int numDigits = (int)(Math.log10(x)+1); 
     int divider = (int) (Math.pow(10, numDigits - 1)); 
     for (int i = 0; i < numDigits/2; i++) { 
      if (x/divider != x % 10) 
       return false; 
      x = (x % divider)/10; 
      divider /= 100; 
     } 
     return true; 
    }