Har*_*eja 5 java java.util.scanner
输入格式
读取一些未知的n行输入,stdin(System.in)直到你达到EOF; 每行输入都包含一个非空字符串.
输出格式
对于每一行,打印行号,后跟一个空格,然后输入作为输入的行内容:
样本输出
Hello world
I am a file
Read me until end-of-file.
Run Code Online (Sandbox Code Playgroud)
这是我的解决方案.问题是我无法继续进行EOF.但输出只是:
Hello world
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
public class Solution {
public static void main(String[] args) {
check(1); // call check method
}
static void check(int count) {
Scanner s = new Scanner(System.in);
if(s.hasNext() == true) {
String ns = s.nextLine();
System.out.println(count + " " + ns);
count++;
check(count);
}
}
}
Run Code Online (Sandbox Code Playgroud)
您的代码不起作用,因为您Scanner在每次递归调用中都创建了一个新对象.不管怎么说,你不应该使用递归,而是迭代地进行.
迭代版
public class Solution {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int count = 1;
while(s.hasNext()) {
String ns = s.nextLine();
System.out.println(count + " " + ns);
count++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
递归版
public class Solution {
private Scanner s;
public static void main(String[] args) {
s = new Scanner(System.in); // initialize only once
check(1);
}
public static void check(int count) {
if(s.hasNext()) {
String ns = s.nextLine();
System.out.println(count + " " + ns);
check(count + 1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28807 次 |
| 最近记录: |