将多个字符串转换为一个然后解析为 int

Converting multiple strings into one then parsing to int

我知道这不是找到回文的最简单方法...但我希望有人能告诉我是否有办法将多个整数字符串转换为单个 int。也许这会从其他人那里构建一个字符串?下面我有一个输出,可以反转您输入的数字。但是,它以一串单独的整数形式出现。我可以将其转换为单个 int 然后以某种方式将其与原始数字进行 bool 吗? 如果我忽略了与此类似的主题,我很抱歉。我查了一下,没有找到可以明确解决我的问题的。

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。然后 if(newInt == num1) 运行 语句。

你可以这样做而不用担心字符串-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

很简单,下面的方法使用 Guava 来执行各个步骤:

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

因此,如果您在开头创建一个空列表,然后将每个已解析的整数添加到列表的末尾,您就可以对您的代码使用相同的技术。但是,每次将固定数字序列乘以 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));   

再次检查是否与原始数字相等。