文章目录
输入输出
1.控制台输入输出
基本语法
public class TestDemo {
public static void main(String[] args) {
System.out.println("输出且换行");
System.out.print("输出但不换行");
System.out.printf("%d\n",10);
}
}
//输出
输出且换行
输出但不换行10
println
输出的内容自带\n
,print
中不带\n
printf
的格式化输出方式和 C 语言的printf
是基本一致的
2.从键盘输入
读入一个字符
直接使用 System.in.read()
可以读入一个字符,但是需要搭配异常处理
public class TestDemo {
public static void main(String[] args) {
System.out.println("Enter a char:");
char i = (char)System.in.read();// 该句会报错
System.out.println("your char is :" + i);
}
}
正确写法
public class TestDemo {
public static void main(String[] args) {
System.out.println("Enter a char:");
char i = 0;
try {
i = (char)System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("your char is :" + i);
}
}
这中方式比较麻烦,不推荐使用
使用 Scanner 读取字符串/整数/浮点数
public class TestDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = scanner.nextLine();
System.out.println("请输入你的年龄:");
int age = scanner.nextInt();
System.out.println("请输入你的工资:");
float salary = scanner.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:" + name +"\n"+"年龄:"+age+"\n"+"工资:"+salary);
scanner.close(); //注意,记得调用关闭方法
}
}
但如果交换一下姓名和年龄的位置会发现一个奇怪的问题:
public class TestDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = scanner.nextInt();
System.out.println("请输入你的姓名:");
String name = scanner.nextLine();
System.out.println("请输入你的工资:");
float salary = scanner.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:" + name +"\n"+"年龄:"+age+"\n"+"工资:"+salary);
scanner.close(); //注意,记得调用关闭方法
}
}
对此bug的理解是,将年龄一行的输入最后的回车作为了姓名的输入。
因此建议:请把输入字符串放在最前面,来防止此bug产生
注意nextLine方法和next方法的不同:
public class TestDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名:");
//nextLine方法是读入一行
String name_nextLine = scanner.nextLine();
System.out.println("nextLine方法输出结果:"+name_nextLine);
System.out.println();//换行
System.out.println("请输入你的姓名:");
String name_next = scanner.next();
System.out.println("next方法输出结果:"+name_next);
}
}
使用 Scanner 循环读取 N 个数字
public class TestDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//hasNextInt() 这是一个方法,来判断是否有下一个整数
while(scanner.hasNextInt()){
int x = scanner.nextInt();
System.out.println("每输入一次,就执行一次:"+x);
}
}
}
注意事项: 当循环输入多个数据的时候, 在idea上使用 ctrl + d 来结束输入
3.猜数字游戏
public class TestDemo {
public static void main(String[] args) {
Random random = new Random();
//int rand = random.nextInt(100); //[0-100)
int rand = random.nextInt(100) + 1; //[1-101)
while(true){
System.out.println("请输入你猜的数字:(1-100)");
Scanner scanner = new Scanner(System.in);
int guess = scanner.nextInt();
if (rand == guess){
System.out.println("猜中了!!!");
break; //如果猜中了,直接退出循环
}else if(guess > rand){
System.out.println("猜大了");
}else{
System.out.println("猜小了");
}
}
}
}