Java关键字
abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new,package, private, protected, public, return, short,static, strictfp, super,switch, synchronized,this, throw, throws, transient,try, void, volatile, while保留字
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var , goto ,const,nullScanner
使用前需要先导入`import`导入(感觉类似c语言中的include) import java.util.Scanner; //导入
使用方法(文件名为Main)
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
int b = scanner.nextInt();
System.out.println(a);
System.out.println(b);
scanner.close();
}
}
输入
aaa
1
输出
aaa
1
若将字符串变量a与整型变量b的输入顺序改变
即
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int b = scanner.nextInt();
String a = scanner.nextLine();
System.out.println(a);
System.out.println(b);
scanner.close();
}
}
则会跳过aaa输入阶段
输入
1
输出
1
因为输入到字符串变量a中的数据为输入1后的回车。
next()与nextLine()
next()
1.遇到有效字符才会开始读入。
2.遇到有效字符后的空格或回车结束读入。
3.对于有效字符前的空格,都会自动去除。
nextLine()
1.遇到回车结束
2.可以读入空格
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
String b = scanner.next();
int c = scanner.nextInt();
System.out.println(a);
System.out.println(b);
System.out.println(c);
scanner.close();
}
}
输入
aa a
a 1
输入
aa a
a
1
hasNextxxx()
例hasNextInt()
判断输入的类型是否为int
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int a;
while(true)
{
if(scanner.hasNextInt())
{
a = scanner.nextInt();
System.out.println(a);
}else{
System.out.println("请重新输入");
}
}
}
}
若输入
111
a
则输出
111
请重新输入
请重新输入
请重新输入
…
…
因为hasNextInt()当调用它的时候,它的空间会存入一个值,再次调用不会覆盖或者增加,而是保持原来的值。
解决方法
1.
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
int a;
while(true)
{
Scanner scanner = new Scanner(System.in); //每次循环重新创建新的扫描器
if(scanner.hasNextInt())
{
a = scanner.nextInt();
System.out.println(a);
}else{
System.out.println("请重新输入");
}
}
}
}
2.
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int a;
String b;
while(true)
{
if(scanner.hasNextInt())
{
a = scanner.nextInt();
System.out.println(a);
}else{
b = scanner.next(); //每次使用b将scanner中不是整型的缓存数据接收
System.out.println("请重新输入");
}
}
}
}
遇到a同行输入a bb cc之类的具有空格的字符串会读多次
例
输入
aa bb cc
输出
请重新输入
请重新输入
请重新输入
3.
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int a;
String b;
while(true)
{
if(scanner.hasNextInt())
{
a = scanner.nextInt();
System.out.println(a);
}else{
b = scanner.nextLine(); //第二点用的next();
System.out.println("请重新输入");
}
}
}
}
与第二点不同的是,遇见同一行输入aa bb cc不会多次输出,但是输入数字后的回车会多输出一次
例如
输入
11
11
aa
11
11
aa bb cc
输出
11
11
请重新输入
请重新输入
11
11
请重新输入
请重新输入