# 编写题解 1031: [编程入门]自定义函数之字符串反转
**我们在使用java解答这个题的时候,可能会由于不理解next和nextLine的区别,使用nextLine接收输入数据导致输入带有空格,从而出现格式错误**
### 一、首先贴出题目答案
import java.util.Scanner;
public class test {
public static void main(String[] args) {
String str = "";
String str1 = "";
Scanner scanner = new Scanner(System.in);
//hasNext判断是否还有输入的数据
if(scanner.hasNext()){
str = scanner.next();
}
scanner.close();
//将字符串转化为char数组
char[] ch = str.toCharArray();
for (int i = ch.length - 1;i >= 0;i--) {
str1 = str1+ "" + ch[i];
}
System.out.println(str1);
}
}
**如果我们使用了scanner.nextLine()来接收输入数据,会保留输入有效字符之前遇到的空白,导致格式错误。因此我们使用scanner.next()来接收数据**
### 二、next() 与 nextLine() 区别
next() :
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
nextLine() :
- 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白
### 三、next() 与 nextLine()的使用
next()方法
package com.string.test;
import java.util.*;
public class StringToChar {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//next()方法
if(scanner.hasNext()){
String str = scanner.next();
System.out.println(str);
}
scanner.close();
}
}
//输出,有效字符之前遇到的空白,next() 方法会自动将其去掉
test
test
nextLine()方法
package com.string.test;
import java.util.*;
public class StringToChar {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//nextLine()方法
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println(str);
}
scanner.close();
}
}
//输出,保留有效字符之前遇到的空白
test
test
0.0分
1 人评分