You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Scanner输入异常:输入年龄后地址字段被跳过的问题求助

Java Scanner输入异常:输入年龄后地址字段被跳过的问题求助

嗨,我能理解你遇到的困扰!这个问题其实是Scanner类的一个常见小坑,我来给你拆解一下原因和解决办法:

问题原因

当你使用scanner.nextInt()读取年龄的时候,它只会读取输入的数字部分,不会处理数字后面的换行符。这个换行符会留在输入缓冲区里,接下来调用scanner.nextLine()读取地址时,它会直接把这个残留的换行符当成空输入,所以看起来就像是地址字段被跳过了。

解决办法

有两种简单的方式可以解决这个问题:

方法一:在nextInt()之后额外调用一次nextLine()来吃掉残留的换行符

修改你的代码,在读取年龄后加一行scanner.nextLine();,把缓冲区里的换行符清空,这样后面的nextLine()就能正常读取地址了:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter your name: ");
        String name = scanner.nextLine();

        System.out.print("Enter your surname: ");
        String surname = scanner.nextLine();

        System.out.println("Enter your age: ");
        int age = scanner.nextInt();
        // 新增这一行,清除残留的换行符
        scanner.nextLine();

        System.out.println("Enter your address: ");
        String address = scanner.nextLine();

        System.out.println("Your name is " + name + " " + surname);
        // 可以顺便把年龄和地址也打印出来验证
        System.out.println("Your age is " + age);
        System.out.println("Your address is " + address);
    }
}

方法二:统一用nextLine()读取所有输入,再把年龄的字符串转成整数

这种方式可以避免换行符的问题,因为所有输入都用nextLine()处理,然后通过Integer.parseInt()把年龄的字符串转换成int类型:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter your name: ");
        String name = scanner.nextLine();

        System.out.print("Enter your surname: ");
        String surname = scanner.nextLine();

        System.out.println("Enter your age: ");
        // 先用nextLine()读取年龄字符串,再转成int
        int age = Integer.parseInt(scanner.nextLine());

        System.out.println("Enter your address: ");
        String address = scanner.nextLine();

        System.out.println("Your name is " + name + " " + surname);
        System.out.println("Your age is " + age);
        System.out.println("Your address is " + address);
    }
}

两种方法都能解决你的问题,你可以根据自己的习惯选择其中一种~

备注:内容来源于stack exchange,提问作者user22418834

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:19:32