scanner阻塞问题

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;


public class SetTest {
 
 public static void main(String[] args) {
  Set<String> words=new HashSet<String>();
  Scanner sc=new Scanner(System.in);
  
  while (sc.hasNext()) {//此处发生阻塞
   String s=sc.next();
   words.add(s);
   System.out.println(s);
    
  }
  System.out.println("test");
  Iterator<String> iter=words.iterator();
  while(iter.hasNext())
  {
  String a=iter.next();
  System.out.println(a); 
  }
 }

}

这是java核心技术上的一个例子 ,竟然出错了让我很是无语

### 回答1: 你可以使用 Scanner 类来读取用户输入的数据。首先,你需要创建一个 Scanner 对象,然后使用该对象的方法来读取输入的数据。例如,下面的代码演示了如何使用 Scanner 类来读取用户输入的整数: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个整数:"); int num = scanner.nextInt(); System.out.println("你输入的整数是:" + num); } } 在上面的代码中,我们首先创建了一个 Scanner 对象 scanner,然后使用该对象的 nextInt() 方法来读取用户输入的整数。最后,我们将读取到的整数输出到控制台上。 除了 nextInt() 方法,Scanner 类还提供了许多其他的方法来读取不同类型的数据,例如 next() 方法用于读取字符串,nextDouble() 方法用于读取双精度浮点数等等。 ### 回答2: Scanner 类是 Java 中的一个工具类,可以用来读取用户输入的数据。使用 Scanner 类之前,必须先导入 java.util 包,因为 Scanner 类位于 java.util 包中。 要使用 Scanner 类,首先需要创建 Scanner 对象。创建对象需要指定要读取的数据来源,可以是控制台输入、文件等等。通常最常用的是从控制台输入数据。 下面是使用 Scanner 类从控制台读取一个整数的示例代码: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { // 创建 Scanner 对象 Scanner scanner = new Scanner(System.in); System.out.print("请输入一个整数:"); // 读取整数 int num = scanner.nextInt(); System.out.println("您输入的整数是:" + num); // 记得关闭 Scanner 对象 scanner.close(); } } ``` 上述代码中,首先创建了一个 Scanner 对象,并指定要读取的数据来源为 System.in,即表示从控制台输入数据。然后通过调用 `nextInt()` 方法,读取用户输入的整数,并保存到 num 变量中。最后输出用户输入的整数。 在实际使用中,我们还可以使用其他的 `next()` 方法来读取不同类型的数据,如 `nextLine()` 读取一行字符串,`nextFloat()` 读取一个浮点数等等。我们也可以使用 `hasNext` 方法来判断是否还有输入可读取,从而实现更复杂的交互操作。 最后,记得在使用完成后调用 `scanner.close()` 来关闭 Scanner 对象,释放资源。 这就是使用 Scanner 类的基本方法,通过它可以方便地读取用户输入的数据,为后续的操作提供数据支持。 ### 回答3: Java中的Scanner类是用于获取用户输入的工具类。要使用Scanner类,需要先创建Scanner对象,并传入要读取的输入流作为参数。 以下是Scanner类的基本用法: 1. 导入Scanner类: ```java import java.util.Scanner; ``` 2. 创建Scanner对象,并指定要读取的输入流(通常是System.in,表示从控制台读取): ```java Scanner scanner = new Scanner(System.in); ``` 3. 使用Scanner对象的方法来获取用户输入,比如: ```java int num = scanner.nextInt(); // 读取整数 double decimal = scanner.nextDouble(); // 读取浮点数 String str = scanner.next(); // 读取字符串(空格之前的部分) String line = scanner.nextLine(); // 读取整行字符串 ``` 4. 使用获取到的用户输入进行后续操作,比如进行计算、输出等。 5. 最后要记得关闭Scanner对象,释放资源: ```java scanner.close(); ``` 需要注意的是,Scanner类的方法在读取用户输入时会阻塞程序的执行,直到用户输入完成。 另外,Scanner类还提供了一些其他的方法,用于判断输入是否是特定类型的数据(如hasNextInt()判断是否有整数输入)、获取特定类型数据(如nextInt()获取下一个整数输入)等。 总结来说,使用Scanner类可以方便地从用户输入获取数据,并进行后续操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值