返回输入\ t为*的程序

时间:2018-09-23 21:35:57

标签: java

该代码应该从键盘读取不确定数量的输入,并将所有选项卡返回为*。当我在eclipse中运行它时,我的程序似乎可以运行,并且没有任何错误。当我在提交网站上提交代码时,这就是我得到的错误。

线程“ main”中的异常java.util.NoSuchElementException:在replaceHW.main(replaceHW.java:9)的java.util.Scanner.nextLine(Scanner.java:1589)处找不到行

import java.util.Scanner;
public class replaceHW {
public static void main(String[] args) {
//write a program that converts all TABS in your code
//with STARS i.e. *
    Scanner in = new Scanner(System.in);
    String ans;
    while(!(ans = in.nextLine()).equals(""))
        System.out.println(ans.replace("\t","*"));
    }
}

1 个答案:

答案 0 :(得分:0)

您的问题很简单:nextLine()hasNextLine()协同工作:正确的代码是:

try (Scanner in = new Scanner(System.in)) {
  while (in.hasNextLine()) {
    String line = in.nextLine();
    if (!"".equals(line)) {
        System.out.println(ans.replace("\t","*"));
    }
  }
  • 尝试使用资源是最佳做法。但是要比使用System.in保持警惕,完成后它将关闭它。
  • hasNextLine()将尝试读取需要很多输入才能找到一行。