我得到了以下代码,并要求编写从TestList扩展的Solution类。我为它编写了一个构造函数(刚刚调用了super),并在下面代码的最后一行调用了printSecond2()方法。所有其他方法都是继承的。这是代码:
public class Test3A {
public static void main(String[] args) {
TestList tl = new Solution();
tl.loadList();
((Solution) (tl)).printSecond2();//prints every second element
}
}
然而,该死的东西从来没有打印出任何东西,所以我进入了TestList类(提供了)并在loadList()方法的每一行之后放置了println语句:
public void loadList ()
{
if (input.hasNextInt ())//input is a Scanner object
{
int number = input.nextInt ();
loadList ();
add (number);
}
}
我发现我可以无限期地继续添加空格,换行符和整数,并且在输入字符时最终会调用add(number)方法。因此,如果我不这样做,它只是等待更多的输入而不是继续前进。
我对此感到困惑,因为提供的示例输入/输出是:
示例输入
1 2 3 4 5
示例输出
2 4
因此自动标记器没有输入任何字符。
我已尝试覆盖解决方案中的方法(我们无法触及其他类)和:
这些都没有改变任何东西。我不知道程序应该如何继续前进并调用printSecond2()
。
有什么想法?我真的想通过我的下一个实践测试:D
答案 0 :(得分:1)
当用户输入一系列数字时,应提供项目数量或以某种方式终止输入。 1 2 3和1 2 3 4都是有效输入,因此扫描仪无法自行决定在何处结束。 可以假设数字序列由Windows上的EOF字符Ctrl-Z和unix上的Ctrl-D终止,因为没有给出其他信息。
答案 1 :(得分:0)
有一种方法可以在行尾停止Scanner
。您需要定义一个包含空格的分隔符,空表达式,而不是下一行字符:
public static void main(final String[] args) {
Scanner scan = new Scanner(System.in).useDelimiter(" *");
while (scan.hasNextInt() && scan.hasNext()) {
int x = scan.nextInt();
System.out.println(x);
}
}
这样Scanner
看到\n
后跟一个分隔符(无),输入在按下返回后停止。