Java 扫描仪输入数据类型

Java 扫描仪输入数据类型,java,java.util.scanner,Java,Java.util.scanner,我需要编写一个测试类,它将执行以下操作: a。让用户输入一个整数并显示它 b。让用户输入一个浮点值并显示它 c。让用户输入其姓名(无空格)并显示 名称为:“您好,欢迎使用扫描仪!” d。让用户输入一个字符并显示它 e。让用户输入任意字符串(带空格)并显示它 我的问题是,我如何只扫描一个字符并显示它?在数字2中,如何输入带有空格的字符串,并显示它?(字母“d”和“e”) 我到处搜索,但找不到最简单的解决方案(因为我不熟悉Java和编程) 以下是我目前的代码: 我希望你能帮助我。谢谢 使用以下命

我需要编写一个测试类,它将执行以下操作:

  • a。让用户输入一个整数并显示它
  • b。让用户输入一个浮点值并显示它
  • c。让用户输入其姓名(无空格)并显示 名称为:
    “您好,欢迎使用扫描仪!”
  • d。让用户输入一个字符并显示它
  • e。让用户输入任意字符串(带空格)并显示它
我的问题是,我如何只扫描一个
字符
并显示它?在数字2中,如何输入带有空格的
字符串
,并显示它?(字母“d”和“e”)

我到处搜索,但找不到最简单的解决方案(因为我不熟悉Java和编程)

以下是我目前的代码:

我希望你能帮助我。谢谢

使用以下命令:

  //for a single char
  char Character = sc.findWithinHorizon(".", 0).charAt(0);

  //for a name with white space
  System.out.print("Enter your full name: ");
      String name2 = sc.next();
      String surname = sc.next();
      System.out.println(name2 + " " + surname);

使用
Scanner.next(Pattern)
并传递
Pattern.compile(“[A-Za-z0-9]”)让Scanner只接受定义的1个字符。
您可以传递任何正则表达式作为参数并检查
Scanner.next()
对于带有空格的下一行

首先,不需要在
PrintStream
中包装
System.out
,因为
out
已经支持使用
format()
printf()
方法进行格式化

接下来,您需要了解,当您输入一行数据时,您也会用新行终止它
\n
next()
方法只使用
而不使用其他方法。因此,如果一个
next()
调用可能与
\n
匹配,那么您需要跳过前面另一个
nextLine()
的任何额外新行
\n

以下是您的修复代码:

  int num;
  double num2;
  String name;
  char c;

  Scanner sc = new Scanner(System.in);

  //for integer
  System.out.print("Enter a number: ");
  num = sc.nextInt();
  System.out.printf("%d\n", num);

  //for float
  System.out.print("Enter a float value: ");
  num2 = sc.nextDouble();
  System.out.printf("%.2f\n", num2);

  //for name w/o white space
  System.out.print("Enter your first name: ");
  name = sc.next();
  System.out.printf("Hello %s, welcome to Scanner\n", name);

  //for character
  System.out.print("Enter a character: ");
  c = sc.findWithinHorizon(".", 0).charAt(0);
  System.out.printf("%c\n", c);

  sc.nextLine(); // skip

  //for name w/ white space
  System.out.print("Enter your full name: ");
  name = sc.nextLine();
  System.out.printf("%s", name);

当我运行程序时,sc.nextLine不允许我扫描,它会立即结束程序。没有错误消息。。输入字符:a输入您的全名:BUILD SUCCESSFUL(总时间:5秒)我无法输入最后一个扫描程序简而言之,sc.nextLine无法扫描我的字符串-_-这很让人困惑,但是sc.nextLine()会把事情搞得一团糟。这是可行的,我尝试过:System.out.print(“输入您的全名”);字符串名称2=sc.next();字符串姓氏=sc.next();System.out.println(name2+“”+姓氏);还有一个很好的建议-使用System.out.print()代替PrintStream;除非你想在光盘上写东西。如果我帮忙,请接受这个问题。
  int num;
  double num2;
  String name;
  char c;

  Scanner sc = new Scanner(System.in);

  //for integer
  System.out.print("Enter a number: ");
  num = sc.nextInt();
  System.out.printf("%d\n", num);

  //for float
  System.out.print("Enter a float value: ");
  num2 = sc.nextDouble();
  System.out.printf("%.2f\n", num2);

  //for name w/o white space
  System.out.print("Enter your first name: ");
  name = sc.next();
  System.out.printf("Hello %s, welcome to Scanner\n", name);

  //for character
  System.out.print("Enter a character: ");
  c = sc.findWithinHorizon(".", 0).charAt(0);
  System.out.printf("%c\n", c);

  sc.nextLine(); // skip

  //for name w/ white space
  System.out.print("Enter your full name: ");
  name = sc.nextLine();
  System.out.printf("%s", name);