- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题
每行输入都将包含一个字符串,后跟一个整数。每个字符串最多包含 10 个字母字符,每个整数都在 0 到 999 的范围内
输出代码
在输出的每一行中应该有两列:第一列包含字符串,并使用 15 个字符左对齐。第二列包含整数,以 3 位数字表示;如果原始输入少于三位数字,则必须用零填充输出的前导数字。
查看此链接以获取更多信息: hackerrank/challenges/java-output-formatting
这是我写的代码(Java):
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("================================");
for(int i=0 ; i<3 ; i++){
String s1=sc.next();
int x=sc.nextInt();
System.out.printf("%-15s%03d\n",s1,x);
}
System.out.println("================================");
}
}
我的确切疑问/问题
虽然上面的代码编译并运行得很好,但我决定进行一些更改并尝试一些不同的东西。我在该行之后添加了以下代码行
int x=sc.nextInt();
我添加的行是:
sc.next();
但是,添加该行代码后,程序将不再接受第一行之后的输入。也就是说,只有第一行输入会被打印,下一行会被忽略(不打印)。我将代码 sc.next() 更改为 sc.nextLine() 但现在程序只会打印前 2 行并跳过打印最后一行(我的代码write 应该接受 3 行文本并使用 printf 将这三行打印到标准输出。谁能解释一下为什么会发生这种情况?
我在网上读到,如果我必须分别使用 next() 和 nextInt() 读取整数后读取字符串,那么我需要在读取整数之后和读取之前添加额外的 next() 或 nextLine() 调用字符串。(这是将扫描仪移动到下一个字符,因为转义字符被 nextInt() 忽略)。
在我的程序中,在循环的第一次迭代期间,最后一次从标准输入读取数据是在读取整数时发生的。在第二次迭代的开头,字符串是第一个被读取的字符串。因此注意到这一点,我进行了更改,但程序没有按计划运行。但是,如果我删除中间的额外读取,该程序就可以完美运行。
谁能解释一下为什么会发生这种情况吗?
提前致谢
最佳答案
如果您将 sc.next()
放在代码后面,Scanner
将读取并使用下一个字符串,然后您的循环将从第二行的整数开始——这就是它无法正常工作的原因。现在,如果您放置 sc.nextLine()
,它将读取并消耗下一行,因此您的循环将从第三行开始,这就是为什么您只有两行。您不应在循环后使用 sc.next()
或 sc.nextLine()
;保持原样即可。
关于java - 为什么 sc.next() 或 sc.nextLine() 在循环内不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44004046/
代码: public void addTest(int idUser) throws IOException { String date = null; String tec = nu
我在我的网站上写了一个 php 搜索脚本来检查一个包是否存在于文本文件中(我使用了 file_get_contents 。)它需要用户输入的内容并将其与字符串 'BUILD:' 结合起来,下面是一个文
else if(input==5){ String artist = "Bob"; System.out.print("Artist: "); artist = keyboar
我正在使用一个 Java 加密程序,它提示用户从 A-Z、0-9、句号、逗号、感叹号和空格映射他/她自己的字符串序列。 程序运行如下: 用户输入与此不同序列的字符串: String original=
我正在解决一个java问题,我正在创建一个程序来模拟旧的电视问答节目,你赌上你的生命。游戏节目主持人格劳乔·马克思选择一个 secret 词,然后与参赛者聊了一会儿。如果任一参赛者在句子中使用 sec
我试图通过使用空格作为分隔符将“sisestus”分割成不同的单词,但仅使用 sc.next() 不允许我输入带空格的字符串,所以我读到我应该使用 .nextLine (),但根本不起作用。我该如何解
这个问题已经有答案了: Scanner is skipping nextLine() after using next() or nextFoo()? (25 个回答) 已关闭 4 年前。 我有一个程
我正在使用服务器和客户端,其中服务器发送一个字符串,其中包含未知数量的\n。例如: foo1 \n foo2 \n foo3 或 foo1 \n foo2 在客户端,由于套接字的阻塞性质,我无法尝试/
如果我从 catch block 中删除 input.nextLine(),则会开始无限循环。注释说 input.nextLine() 正在丢弃输入。它究竟是如何做到这一点的? import java
基本上,我正在尝试执行一个while 循环,并继续阅读直到行输入为$。读取时,循环应该退出。 但是,我收到一个运行时异常,如 java.util.InputMismatchException。 代码如
我写了一个基本代码来读取不同的数据类型。但我无法输入字符串作为输入。我错过了什么? public class Main { public static void main(String[] args)
为什么nextLine()方法不起作用?我的意思是,在第二次扫描调用后我无法输入任何句子,因为程序运行到最后并退出。 输入:era时代食品食品正确正确sss sss退出 我应该使用另一个 Scanne
考虑代码: import java.util.*; public class TestClass { public static void main(String[] args) {
我是 java 初学者。我想知道 nextLine() 方法如何丢弃您当前的输入?例如假设以下代码: Scanner input = new Scanner(System.in); int a = i
当我运行我的程序而不是读取字符串并将其存储在 tempAddress 中时,我的程序只是在我输入之前打印下一行。对前两个使用下一个作品,因为我只使用一个词,但第三个词包含多个词,所以需要其他东西,通过
我的猜谜游戏一切正常,但是当涉及到询问用户是否想再玩的部分时,它会重复这个问题两次。但是我发现,如果我将输入法从 nextLine() 更改为 next(),它不会重复问题。这是为什么? 这里是输入和
这个问题已经存在: 关闭 9 年前。 Possible Duplicate: Scanner issue when using nextLine after nextInt 我正在尝试创建一个程序,
这个问题在这里已经有了答案: Scanner is skipping nextLine() after using next() or nextFoo()? (24 个回答) 关闭7年前。 我在尝试使
? 1 2
这个问题已经有答案了: Scanner is skipping nextLine() after using next() or nextFoo()? (25 个回答) 已关闭 6 年前。 f
我是一名优秀的程序员,十分优秀!