当前位置: 首页 > 知识库问答 >
问题:

Java扫描仪类中的字符串格式

苏嘉歆
2023-03-14
Scanner i=new Scanner(System.in);

System.out.println("Enter an integer: ");
int in=i.nextInt();

System.out.println("Enter an floating point number: ");
double d=i.nextDouble();

System.out.println("Enter a string: ");
String str=i.next();

System.out.printf("%s%n,Sum of%2d and %.2f is %.2f%n",str,in ,d,in+d);

我的问题是格式化通过扫描仪输入的字符串。我试图输入“Result is”,但printf()似乎只看到字符串的“Result”部分,那么空格的命令是什么呢?thx公司

共有3个答案

卓胜
2023-03-14

我的问题是格式化通过扫描仪输入的字符串。我试图输入“Result is”,但printf()似乎只看到字符串的“Result”部分

更改此:

String str=i.next();

对此:

String str=i.nextLine();

next()将只返回空格之前的内容。另一方面,返回包含单词之间空格的输入。

白腾
2023-03-14

好吧,你可以做一个这样的把戏,只要添加新的字符串并打印出来

String str=i.next();
  String strNew=str;
罗浩然
2023-03-14

有几种可能的解决方案,但我相信以下将为您提供与其他输入一致的行为:

System.out.println("Enter an floating point number: ");
double d = i.nextDouble();
i.skip("((?<!\\R)\\s)*"); // skip whitespace, stopping after any newline

System.out.println("Enter a string: ");
String str = i.nextLine();

如果需要,这种方法允许您在一行上输入所有输入。

例如:

1 1.2结果为

但是,如果您真的希望用户在每次输入后按Enter键,那么最好使用Scanner的nextLine()方法读取所有输入,然后根据需要进行解析(使用Integer.parseInt等)。

Java 9

由于Java 9中的一个bug,原子分组(?

i.skip("((?<!(?>\\R))\\s)*"); // skip whitespace, stopping after any newline
                              // Compatibility Note: Java 9 safe use of \R

如果用于Java 8,此代码也可以正常工作,不会造成任何问题,因此实际上我建议您在代码中使用此变通版本,只是为了安全起见(例如,如果有人可能复制/粘贴或将目标设置为其他JDK)。

Java 7及更早版本

换行符匹配器\R在Java-8或更高版本中可用。在该版本之前,您必须使用“等价”模式\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]但是要作为真正的等价物工作,它实际上必须包装在原子分组(?

i.skip("((?<!(?>\\u000D\\u000A|[\\u000A\\u000B\\u000C\\u000D\\u0085\\u2028\\u2029]))\\s)*"); // skip whitespace, stopping after any newline

 类似资料:
  • 我正试图用Java中的扫描器将一个字符串分成另外两个字符串。好像不起作用。我只能通过谷歌找到扫描仪用来读取控制台输入的例子。我从扫描仪的手册中找出了我做事情的方式,我不确定我错了什么。 第一个和第二个是空白的,我不知道为什么。

  • 我创建了一个简单的扫描器,用于计算中的字符串数。txt文件。每个字符串位于下一行。它算错了,每次它给我数字297,甚至有超过20000个字符串。这个txt文件是由我编写的另一个程序创建的,它从网站获取链接,并使用FileWriter和BufferedWriter将其保存到。txt文件。可能有什么问题? 编辑:字符串示例:

  • 任何人都可以帮我解决这个问题。我接受三个输入:整数、双精度和字符串,但Scanner类不接受字符串值

  • 我制作了一个简单的程序,根据公式中的3个数字计算增量。但是,小数点后的分数和数字(如3.33、3/4)有问题。如果我将其替换为任何字母,则会出现错误: 线程“main”java中出现异常。util。java上的InputMismatchException。base/java。util。扫描仪。throwFor(Scanner.java:939)访问java。base/java。util。扫描仪。下

  • 任何人都可以帮我解决这个问题。我接受三个输入:整数、双精度和字符串,但Scanner类不接受字符串值

  • 问题内容: 我试图找到一种方法来从键盘输入。 我尝试使用: 该方法不存在。 我尝试了作为。但是,它并不总是在每种情况下都可行,因为我从我的方法中调用的另一个方法需要作为输入。因此,我必须找到一种显式将char作为输入的方法。 有什么帮助吗? 问题答案: 你可以从中提取第一个字符: 消耗正好一个字符,你可以使用: 要严格使用一个字符,可以使用: