繁体   English   中英

如何使用java.util.Scanner正确扫描用户输入?

[英]How to properly scan for user input using java.util.Scanner?

我实现了以下代码,以小写字母打印短语:

import java.util.Scanner;

public class LowerCase{ 
    public static void main (String[] args) {
        String input, output = "", inter;
        Scanner scan, lineScan;
        scan = new Scanner(System.in); // Scan from the keyboard
        System.out.println("Enter a line of text: ");
        input = scan.nextLine(); // Scan the line of text

        lineScan = new Scanner(input);
        while (lineScan.hasNext()) {
            inter = scan.next();
            output += inter.toLowerCase() + " ";
        }
        System.out.println(output);
    }
}

我不知道我的实现有什么问题! 它可以正常编译,但是当我运行代码并键入输入短语时,它会冻结。

您的循环正在等待一台扫描仪的行,但正在从另一台Scanner读取行(因此为无限循环)。 这个

while (lineScan.hasNext()) {
    inter= scan.next();

应该是这样的

while (lineScan.hasNext()) {
    inter= lineScan.next();

您不需要两个扫描器对象即可实现输出,这将为您工作

scan= new Scanner(System.in); //scan from the keyboard
System.out.println("Enter a line of text: ");
input=scan.nextLine(); //scan the line of text


System.out.println(input.toLowerCase());
scan.close();

我建议使用其他方法:

import java.util.*;
public class something
  {
      static Scanner reader=new Scanner(System.in);
      public static void main(String[] args)
      {
          System.out.println("type something (string)");
          String text = reader.next();  // whatever the user typed is stored as a string here
          System.out.println(text);

          System.out.println("type something (int)");
          int num = reader.nextInt();  // whatever the user typed is stored as an int here
          System.out.println(num);

          System.out.println("type something (double)");
          double doub = reader.nextDouble(); // whatever the user typed is stored as double here
          System.out.println(doub);
        }
    }

这是一些有关如何获取用户输入的示例代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM