【问题标题】:How to break this cycle?如何打破这个循环?
【发布时间】:2015-04-01 21:02:45
【问题描述】:

我正在编写一个读取文本并转换引号的程序,我在完成循环时遇到问题hasNext(),程序应该以 EOF 结束,你能帮帮我吗?

这是我提到的循环:

  boolean reference= false;     
    while(input.hasNext())
    {
        String text = input.nextLine();

        for (int i = 0; i < text.length(); i++)
        {
            if(text.charAt(i)=='"' && reference==false)
            {
                reference=true;
                System.out.print("``");
            }
            else if(text.charAt(i)=='"' && reference == true)
            {
                reference=false;
                System.out.print("''");
            }
            else
            {
                System.out.print(text.charAt(i));
            }   
        }
    }

【问题讨论】:

  • 你正在读取文件?
  • 您似乎正在使用扫描仪。 Scanner 类有一个方法叫做 close() - docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
  • @Jean-FrançoisSavard 不,我只是在阅读我在控制台上输入的内容。
  • @SurgeonofDeath 是的,我尝试使用它,但它不起作用,问题是我不知道如何告诉程序 EOF 在哪里。
  • @SebastianRojasCaballero,你怎么知道它不起作用?它一直在读吗?如果是这种情况,那么您可以简单地使用 break;

标签: java string java.util.scanner cycle eof


【解决方案1】:

@Jean-FrançoisSavard 不,我只是在阅读我在控制台上输入的内容。

从控制台读取时,hasNext() 方法将循环直到 ctrl+z (windows) 或 ctrl+ d (unix) 已键入。

这是发送EOF的方式(打破这个循环)System.in

【讨论】:

  • 我不知道,但我必须在名为 uva.onliine.judge 的网站上发布此代码,并且有一台机器可以读取整个代码,它会告诉您问题是否正在解决与否,机器不会键入 ctrl+z 或 ctrl+d 来结束它,而是会告诉我问题存在运行时错误。
【解决方案2】:

我认为您应该尝试while (input.hasNextLine()),因为您在之后阅读了下一行。

【讨论】:

  • 在这种情况下无关紧要。
猜你喜欢
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 2022-12-10
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多