1.sc.nextInt()
nextInt()会跳过任何空白字符比如(空格和换行符,直到没有整数)
比如输入 45 4 4324
3423 5435
1) 如果只读一个整数的话,在读取完第一个整数45后,光标会跳过所有空白字符,指向下一个非空白字符
2) 当输入是abc123这样子的话,会直接抛出异常
3)当只有一个整数时, 如果最后一个是换行符(一般我们输入完整数以后按entre) 会指向换行符
(做题的时候要注意,需要使用sc.nextLine() 把这个换行符消耗掉)
2.sc.nextLine()
1) 会读取换行符以前的所有字符包括空格,作为一个字符串返回
2) 但是如果直接输入一个换行符会返回一个空字符串
3) 如果是abcd4534这样子的字符串,他会接受这个字符串.其中并不包括换行符,
4) 换行符只是标志行的结束并不会包含在返回的字符串里面5) 光标会移动到下一行,但是不同操作系统细节上会有差别,原则上贯标会在下一行的开头
3.sc.next();
1) 从输入中读取一个单词,不包括(换行符与空格),会读取遇到的第一个分隔符后面的内容(空格、制表符、换行符之类的)
也会跳过空格和换行符
2) 光标会在读取完的单词的后面(也就是第一个分隔符比如空格)
3) 可以配合sc.nextLine()清除尾行的换行符
4) 返回值是字符串(不是字符char)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一句话(含多个单词):");
// 读取第一个单词
String word1 = sc.next();
// 读取第二个单词
String word2 = sc.next();
System.out.println("前两个单词是:" + word1 + " " + word2);
// 读取剩余的部分作为新的一行
String remainingLine = sc.nextLine();
System.out.println("剩余的内容是:" + remainingLine);
sc.close();
}
}
输入Java programming is interesting.
会输出
4.sc.nextDouble();
1) 会跳过(空格和换行符等等),找到符合double的字符串会自动解析成double类型,但是如果遇到abc这样的就会抛出异常了
2) 读取到一个正确的double值光标会指向有效值的后一个位置
(与nextInt()差不多可以类比)
5.sc.hasNext();
1) 会跳过所有空白符(空格、制表符、换行符)
2) 当只包含换行符和空格的时候,他会返回一个false不会读取
(hasNextInt()之类同理)
输入案例
输出案例
6.sc.haNextLine();
1) 逐行读取直到读到末尾
2) 会检测空行,读取换行符和nextLine()是一样的
直接举例子
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入多行内容(包括空行,输入 Ctrl+D 或 Ctrl+Z 结束):");
// 使用 hasNextLine() 检测每一行是否存在
while (sc.hasNextLine()) {
String line = sc.nextLine();
if (line.isEmpty()) {
System.out.println("这是一个空行!");
} else {
System.out.println("你输入的是:" + line);
}
}
sc.close();
System.out.println("输入结束,没有更多行可读取。");
}
}
输入用例
输出