- 要是输入的是不带空格的字符串用next()、nextLine()都可以,
- 但是以防nextLine()吃回车,用next()比较好;
- 如果输入的是带空格的字符串,只能用nextLine(),
每句话都要注意加上in.nextLine(); 语句吃掉回车符
Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是 空白符;比如空格,回车,tab 等等。
next()方法读取到空白符就结束l;
nextLine()读取到回车结束也就是“\r”;
屏幕逐个输入,逐个交互
Scanner in = new Scanner(System.in);//定义scanner,等待输入
System.out.println("请输入你的姓名:");
String name = in.nextLine();//字符类型的输入方式
System.out.println(name);
System.out.println("请输入你的年龄:");
int age = in.nextInt();//整数类型的输入方式
System.out.println(age);
System.out.println("请输入你的身高:");
double height = in.nextDouble();//小数类型的输入方式
System.out.println(height);
屏幕读入数组
Scanner in = new Scanner(System.in);
int[] num = new int[6];
for (int i = 0; i < 6; i++) {
num[i] = in.nextInt();
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
单行输入
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) { // 牛客网推荐写法
int n = in.nextInt(); // 数组总数
int[] nums = new int[n]; // 创建数组
for(int i = 0; i < n; i++) {
nums[i] = in.nextInt(); // 读入数组元素
}
}
in.close();
}
}
逐行读入,每行个数确定
import java.util.Scanner;
public class ChooseSeat {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int n = in.nextInt(); // 读第一行的参数
int[] nums = new int[n]; // 创建数组
for(int i = 0; i < n; i++) {
nums[i] = in.nextInt(); // 不停的读入元素
}
}
in.close();
}
}
举个真实案例
读取:
77 777
77
777 7777 777
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//获取输入的整数序列
while (sc.hasNext()){
int k=0;
String str = sc.nextLine();
String[] strings = str.split(" ");
//转为整数数组
int[] ints = new int[strings.length];
for (int i = 0; i < strings.length; i++) {
ints[i] = Integer.parseInt(strings[i]);
}
System.out.println(k);
}
}
}
读取:
10
1,2,3
1,2,3
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//定义scanner,等待输入
//获取输入的整数序列
// while (sc.hasNext()) {
String str1 = sc.nextLine();
int N = Integer.parseInt(str1);
System.out.println(N);
String str = sc.nextLine();
String[] strings = str.split(",");
// //转为整数数组
int[] weight = new int[strings.length];
for (int i = 0; i < strings.length; i++) {
weight[i] = Integer.parseInt(strings[i]);
System.out.println(weight[i]);
}
String str2 = sc.nextLine();
String[] strings2 = str2.split(",");
//转为整数数组
int[] value = new int[strings2.length];
for (int i = 0; i < strings2.length; i++) {
value[i] = Integer.parseInt(strings2[i]);
System.out.println(value[i]);
}
//
int[][] dp= new int[strings.length+1][N+1];
for(int i=1;i<=strings2.length;i++){
int w =weight[i-1],v =value[i-1];
for(int j=1;j<=N;j++){
if(j>=w){
dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-w]+v);
}else {
dp[i][j]=dp[i-1][j];
}
}
}
System.out.println(dp[strings2.length][N]);
}
}
读取:
1
2
3
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//定义scanner,等待输入
//获取输入的整数序列
while (sc.hasNext()) {
int m, x, y;
m = sc.nextInt();
for (int i = 0; i < m; i++) {
x = sc.nextInt();
y = sc.nextInt();
int res = x + y;
System.out.println(res);
}
}
}
}