【问题标题】:Java Input from console giving unexpected values [closed]来自控制台的 Java 输入给出了意外的值 [关闭]
【发布时间】:2014-03-06 07:05:57
【问题描述】:

在给定的代码中,

输入:
1
7

输出:
1

输出应该是 7。我错过了什么??

import java.io.*;
import java.util.*;

class compiler 
{
    public static void main(String args[] ) throws Exception 
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int testcases = Integer.parseInt(br.readLine());

        //  System.out.println("If this statement is added it works as expected!")

        int n=Integer.parseInt(br.readLine());

        System.out.println(n);
    }
}

*我也试过用扫描仪

【问题讨论】:

  • 这符合我的预期。
  • @pedromss 我只想打印一个值!!!
  • 正常工作,我得到7。
  • 这个问题有什么问题?为什么有这么多反对票?
  • 它应该打印 7. 处理稀缺资源时可能会出现奇怪的行为。使用 try-finally 块并关闭流是避免意外结果的更安全方法。

标签: java java.util.scanner stdin bufferedreader inputstreamreader


【解决方案1】:

这应该可行。如果您没有使用 IDE,那么也许您更改了代码并且没有再次编译。所以您实际上是在运行具有不同输出的旧代码?

【讨论】:

  • 它在命令提示符(windows)中工作。以前我使用的是 IDE-JCreator。
  • 它也不适用于通过标准输入自动输入的在线编码竞赛
【解决方案2】:

事实上,在运行您的代码后,testcases 将为 1,n 将为 7(这将打印在控制台上 - 您的示例与给出的输出不匹配)。

也许这段代码将有助于将最后给定的输入打印到输出:

int n;
while(br.readLine())
{
    n=Integer.parseInt(br.readLine());
}
System.out.println(n);

【讨论】:

  • 是的,这就是问题所在。该示例与输出不匹配
  • 在这种情况下,您正在运行另一个代码或从另一个控制台复制输出;)
【解决方案3】:
 The code must be like this if you want to use command line argument
 Public static void main(String ar[])
 {

  int i=(0;
  for(i=0;i<ar.length;i++)
  System.out.println(" "+ar[i]);

    }

【讨论】:

  • 这与问题无关。可以是评论。
  • 此代码不起作用。它有几个语法错误。
  • 我知道 ..public 会很小而且 i=0;...那些书写错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多