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);