在编程比赛中输入输入时,如何阻止扫描仪读取输入?

时间:2012-01-09 01:07:54

标签: java stdin

之前我参加过一场比赛,而且我已经看过另一场比赛了。但当它进入时,我意识到我不知道如何从机器上获取用户输入。当一个普通的人使用它时,我知道我可以通过为其分配关键字来退出,但是当它被传送到一台生成自己的代码来测试我的机器时,我将如何处理它?当我不知道最后一个输入是什么时,如何编写我的代码以打破while循环?

在java中查看时:

while(sc.hasNext()){ /*code here. Breaks out when machine input is done*/}

我调查了一下,我发现了这个问题:“从STDIN读取输入并输出到STDOUT。”当我点击java的链接时,它给了我缓冲的阅读器或扫描仪的维基百科,但没有提供额外的信息,但我给出的示例代码。

示例输入:

2
2 5
3 4 8

让我们假设第一行是要读取多少行。我们如何知道何时停止阅读每一行,或者我们只是阅读整行?

3 个答案:

答案 0 :(得分:2)

while(sc.hasNext() && !shouldStopReading){ /*code here*/}

或者还有......

while(sc.hasNext()){ /*code here*/ if (shouldStopReading) { break; } }

回复您的修改:

  

样本输入:2 2 5 3 4 8

     

让我们假设第一行是要读取多少行。我们怎么样   知道什么时候停止阅读每一行,或者我们只是阅读   整条线?

“行”通常以Windows上的回车/换行组合结束,或者只是Mac / Unix / Linux上的换行符。您可以只查找这些字符来划分线条。

通常有专门用于读取“线”的功能。

你的例子看起来非常简单。作为伪代码:

String lineCountString = ReadLine();
int lineCount = StringToInt(lineCountString);
for (i from 0 to lineCount - 1)
     String aLine = ReadLine();
     DoSomethingWithEachLine(aLine);

答案 1 :(得分:2)

转到http://www.go-hero.net/jam/,其中包含所有已输入的Google Code Jam解决方案的记录。

您可以按语言搜索并查看有关如何读取输入文件的许多示例。

通过查看示例,您可能会更好地了解这样做的不同方法。

答案 2 :(得分:1)

某些竞争问题指定了确定有效输入的count,如example所示。