2016-09-18 14 views
0

나는 이것이 회문을 찾는 가장 간단한 방법은 아니지만 ... 여러 정수 문자열을 단일 int로 변환하는 방법이 있는지 누군가가 말해 주길 바랬습니다. . 어쩌면 다른 사람들로부터 하나의 문자열을 만들 수 있습니까? 아래에는 입력 한 숫자가 반전되는 출력이 있습니다. 그러나, 그것은 분리 된 정수의 문자열로 나온다. 이 단일 캐스팅 할 수있을 것이라고 단일 int 다음 어떤 식으로 원래 숫자에 대해 부울? 이와 비슷한 주제를 간과하면 미안합니다. 나는 내 문제를 명확하게 해결 한 것을 찾지 못했습니다. 내가 int로 변환 한 후 한 고체 문자열로 인쇄 문자열 (INT 레브) (INT 레브) (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); 
    } 
}  
} 

. 그런 다음 (newInt == num1) 명령문을 실행하십시오.

당신은 문자열 INT 변환의 두통없이이 길을 갈 수
+2

palindrome itd를 찾고 있다면 문자열로 읽는 것이 가장 좋습니다. 이것에 의해, String의 최대 사이즈까지의 임의의 사이즈의 「수치」를 얻을 수 있습니다. 그러나,이 방법으로 가고 싶다면,'String backwardsNum'을 가질 수가있어 캐릭터 라인을 연결할 수 있습니다. 그래서'backwardsNum + =/* 여기에 무엇이든 * /' –

+0

palendrome을 찾는 가장 좋은 방법에 대해 Michael Pickett는 매우 동의합니다. 정수로 int의 여러 문자열에 대한 귀하의 질문에 관해서 ... 당신이 원하는 것에 대해 더 명확해야합니다. 적어도 샘플 입력과 출력 결과를 제공하십시오. 명시된 바와 같이, 이것은 혼란 스럽습니다. – nhouser9

+0

'0'숫자는주의하십시오. 당신은 숫자를 뒤집어 쓰려고하는 것 같지만, '10'의 반대는 '01'이 아니라 '1'입니다. 결과에 선행 0 (입력의 후행에서)을 기억하려면 실제로는 숫자가 아닌 문자열로 처리해야합니다. – 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

오른쪽, 감사합니다 @ Andreas – 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)); 

그리고 원래 번호와 일치하는지 확인하십시오.