java题目输入123456输出结果为456123

题目大概就是这样,但是我特别不明白的是的56789 输出结果为89756中间的7怎么保持不变。
求个大神来帮我

看你很着急的样子. 所以帮你整理下代码:

    思路和 "不但而且要怎样" 是差不多的. 不过好像他不方便提交代码

    同时为了帮助你理解, 也提供了一个字符串截取的方法来实现同样的效果

    参考代码

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-02-09
输入的时候可以用nextLine来获取一个String。
再用string[]num=sc.split(“”);
获取num数组,这时候就可以用for循环换位置了
for(int i=0;i<num. length/2(如果是单数比如说5个,因为num.length是int类型,除以二就直接取整,这个地方就是i<2即可实现第三个不换位置);i++)
{temp=num[i];
num[i]=num[num. length-num. length/2+i];
num[num. length-num. length/2+i]=temp;
}
再输出就可以了追问

你好请问有完整的吗, 我这边按照方法显示num已经被定义了

追答

。。那你就是已经用过num了啊,num只是我随便取得数组名字啊,你换一个撒

你是不是先定义了num的大小。。

要int和split一起才行的,必须初始化和赋值一起

你如果还是不懂我晚上有空了打程序给你吧,我现在用手机打的不方便

Scanner sc =new Scanner( System.in)

String str=sc.nextLine()

int[]num=str.split(“”)

上面那句不是int num是string搞错了你改一下

追问

/(ㄒoㄒ)/ 还是不会难受。
还有其他办法教我吗 这作业12点之前得上交

追答

好,我现在拿下笔记本吧

追问

好的,谢谢大佬

追答

直接都在主函数里面了,如果你们老师要求包含函数方法你自己转换吧,程序已经测试过了,可以用
楼下那位的方法也是可以实现的,不过不是很符合switch half题目的要求
import java.util.Scanner;
public class try1 {
public static void main(String[]args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入所需要转换的数字串");
String str=sc.nextLine();
String[]num=str.split("");
int c=num.length;
for(int i=0;i<c/2;i++)
{
String temp=num[i];
num[i]=num[c-c/2+i];
num[c-c/2+i]=temp;
}
System.out.print("转换之后的数字串是:");
for(int i=0;i<c;i++)
System.out.print(num[i]);
sc.close();
}
}

追问

ㄟ(≧◇≦)ㄏ谢谢大佬你写的这个我看懂了哈哈哈哈哈哈哈哈。

追答

没事没事

length是int类型这一点在很多地方都可以通过除以2来解决双数单数问题,只要你用好了

相似回答