【JavaSE】8.输入输出

输入输出

1.控制台输入输出

基本语法

public class TestDemo {
    public static void main(String[] args) {
        System.out.println("输出且换行");
        System.out.print("输出但不换行");
        System.out.printf("%d\n",10);
    }
}

//输出
输出且换行
输出但不换行10
  • println输出的内容自带 \nprint中不带 \n
  • printf的格式化输出方式和 C 语言的 printf 是基本一致的

image-20240123105743251

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);
    }
}

image-20240123110140985

正确写法

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();    //注意,记得调用关闭方法
    }
}

image-20240123111522715

但如果交换一下姓名和年龄的位置会发现一个奇怪的问题:

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();    //注意,记得调用关闭方法
    }
}

image-20240123114814178

对此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);

    }
}

image-20240123114027404

使用 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);
        }
    }
}

image-20240123115737515

注意事项: 当循环输入多个数据的时候, 在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("猜小了");
            }
        }
    }
}

image-20240123121834553

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值