看你很着急的样子. 所以帮你整理下代码:
思路和 "不但而且要怎样" 是差不多的. 不过好像他不方便提交代码
同时为了帮助你理解, 也提供了一个字符串截取的方法来实现同样的效果
参考代码
import java.util.Scanner;
public class NumDemo {
public static void main(String[] args) {
while (true) {
int num = getNumber();
System.out.println("方法1 :The converted number is:" + convert(num));// 方法1
System.out.println("方法2 :The converted number is:" + convert2(num));// 方法2
System.out.println();
}
}
// 该方法用于提示用户输入,并且返回一个整数
public static int getNumber() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("Please enter an integer:");
String line = sc.nextLine();
try {
int num = Integer.parseInt(line.trim());//从字符串转整数
return num;
} catch (Exception e) {//如果输入的不是整数,那么提示,要求重输
System.out.println("Sorry! Must enter an integer");// 提示用户输错了
System.out.println();
continue;
}
}
}
// 该方法用于 转换数字 : 使用字符串截取的方法实现
public static int convert(int a) {
//因为考虑输入为负数的情况,所以这里取了绝对值
String str = String.valueOf(Math.abs(a));// 整数取绝对值转成字符串
String result = "";// 保存结果的字符串
int len = str.length();// 字符串的长度
String s1 = str.substring(len / 2 + len % 2);// 前面部分
String s2 = len % 2 == 0 ? "" : str.charAt(len / 2) + "";// 如果字符串长度是奇数中间不变
String s3 = str.substring(0, len / 2);// 后面的部分
result = s1 + s2 + s3;// 全部连接起来
int num = Integer.parseInt(result);// 字符串转成整数
if (a >= 0) {//如果输入的是正数,就返回正数
return num;
} else {
return num * -1;//如果输入的是负数,就返回负数
}
}
// 该方法用于 转换数字 帮你整理的 "不但而且要怎样" 的思路
public static int convert2(int a) {
String str = String.valueOf(Math.abs(a));// 整数取绝对值转成字符串
char[] cs = str.toCharArray();// 转换成字符数组
for (int i = 0; i < cs.length / 2; i++) {
char temp = cs[i];
cs[i] = cs[cs.length - cs.length / 2 + i];
cs[cs.length - cs.length / 2 + i] = temp;
}
int num = Integer.parseInt(new String(cs));// 字符串转成整数
if (a >= 0) {
return num;
} else {
return num * -1;
}
}
}
测试效果
Please enter an integer:123456
方法1 :The converted number is:456123
方法2 :The converted number is:456123
Please enter an integer:56789
方法1 :The converted number is:89756
方法2 :The converted number is:89756
Please enter an integer:abc
Sorry! Must enter an integer