将多个字符串转换为一个然后解析为 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));
再次检查是否与原始数字相等。
我知道这不是找到回文的最简单方法...但我希望有人能告诉我是否有办法将多个整数字符串转换为单个 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));
再次检查是否与原始数字相等。