使用Scanner所遇到的问题

这篇博客探讨了在Java中使用Scanner和BufferedReader进行控制台输入时遇到的问题。作者指出,虽然Scanner更适合处理基本数据类型和字符串,但在多线程和性能方面,BufferedReader更具优势。问题主要集中在.nextXxx()方法后使用.nextLine()可能导致的空行问题,以及Scanner相比BufferedReader的速度和并发支持不足。
摘要由CSDN通过智能技术生成

Scanner来自 java.util.Scanner 中。
对于我这种菜鸟来说,Scanner主要是用来进行控制台输入。在学习I/O后,了解到BufferedReader也可以进行控制台输入,但是习惯改不过来了,只能继续用Scanner啦!

题外话:使用 BufferedReader 获得控制台输入:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

问题1:.nextXxx() 与 .nextLine()

比如这样一个场景:首先输入一个数字代表接下来需要输入的行数,然后输入数据:

2
Emilia 16
ram 17

写法:

        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        //scanner.nextLine();    
        S
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,Scanner默认情况下是以回车作为输入结束的标志,所以当Scanner遇到回车时,会停止读取输入并将其作为输入的一部分。如果您想在遇到其他特定字符时停止读取输入,可以使用Scanner的delimiter方法来设置分隔符。例如,如果您想将空格作为输入结束的标志,可以使用以下代码: ``` Scanner scanner = new Scanner(System.in); scanner.useDelimiter(" "); while (scanner.hasNext()) { String input = scanner.next(); // do something with the input } ``` 在上面的代码中,我们使用Scanner的useDelimiter方法将空格设置为分隔符,这意味着当Scanner遇到空格时,它会停止读取输入并将其作为一个完整的输入返回。然后,我们可以使用Scanner的next方法获取输入并进行处理。 ### 回答2: ScannerJava中的一个工具类,用于扫描和解析用户输入的数据。当Scanner遇到回车键时,它会结束当前输入的行,并将数据传递给程序。 例如,我们可以通过以下代码来演示Scanner遇到回车键停止的现象: ```java import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); int num = scanner.nextInt(); System.out.println("请输入一个字符串:"); String str = scanner.nextLine(); System.out.println("输入的整数为:" + num); System.out.println("输入的字符串为:" + str); } } ``` 在上面的代码中,当我们输入一个整数后,按下回车键,Scanner会将整数读取并存储在num变量中,然后程序继续运行。接着,我们需要输入一个字符串,但是由于Scanner的特性,它会忽略我们按下的回车键,直接将空字符串作为输入的字符串。这是因为Scanner在读取整数后,会将回车键作为一个分隔符,而不是作为输入的一部分。 所以,Scanner遇到回车键时会停止当前的输入行,并将输入数据传递给程序。在这个例子中,即使我们按下回车键,Scanner也会将回车之前的整数读取并处理。 ### 回答3: ScannerJava 中的一个类,它用于从输入源中获取数据。当使用 Scanner 从键盘输入时,它会遇到回车(Enter)键才会停止读取输入。 在程序中使用 Scanner 类时,我们通常使用 nextLine() 方法来读取输入的字符串。当我们在控制台输入一串字符并按下回车键时,Scanner 会将这一串字符作为一个字符串返回,并停止读取输入。 例如,假设我们有以下代码: ``` import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个字符串:"); String input = scanner.nextLine(); System.out.println("您输入的字符串是:" + input); } } ``` 当我们运行该程序时,在控制台上会输出 "请输入一个字符串:" ,然后我们在控制台上输入一些字符,最后按下回车键。输入的字符串会被赋值给 input 变量,并打印出来。 需要注意的是,Scanner 类的 next() 方法和 nextLine() 方法之间是有区别的。next() 方法会遇到空格或回车时停止读取输入,而 nextLine() 方法会一直读取到遇到回车为止。 希望以上回答能够解决您的问题。如有任何疑问,请随时追问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值