public class Main{
static final int start = 10001
static final int end = 999999
public static void main(String[] args) {
Scanner sc = new Scanner(System.in)
int t
StringBuilder sb
int sum
boolean su
while (sc.hasNextInt()) {
su = false
t = sc.nextInt()
for (int i = start i <= end i++) {
sum = 0
sb = new StringBuilder(String.valueOf(i))
if (sb.toString().equals(sb.reverse().toString())) {
for (int j = 0 j < sb.length() ++j) {
sum += sb.charAt(j) - '0'
}
if (sum == t) {
su = true
System.out.println(i)
}
}
}
if (!su) {
System.out.println(-1)
}
}
sc.close()
}
}
如果不能AC,优化一下: 对每个i,转为(字符或整数)数组,对数组从索引0到长度的一半遍历,判断对称位置是否相同,且各位数字和是否符合要求.
System.out.println("请输入...")Scanner in = new Scanner(System.in)
String number = in.next()
System.out.println("您输入的是"+number)
boolean flag = true
for(int i=0i<number.trim().length()/2i++){
//把索引为i位置的字符和它对称索引位置的字符相比,看是否一样
if(!String.valueOf(number.charAt(i)).equals(String.valueOf(number.charAt(number.trim().length()-i-1)))){
flag = false
break
}
}
if(flag){
System.out.println("它是回文数")
}else{
System.out.println("它不是回文数")
}
没有加上对输入数据的合法性校验,如果有需要的话,你可以自行对number进行检查,例如校验number是不是数字,是不是负数等等