【问题标题】:rudimentary java related issue基本的java相关问题
【发布时间】:2014-07-28 17:22:04
【问题描述】:

从今天开始,我已经开始遇到这个特殊的、前所未有的问题

我的程序在某个点后停止接受输入并异常终止

摘录如下:

public static void main(String[] args) {
  try
  {
  Scanner sc=new Scanner(System.in);
  String a=sc.nextLine();
  String b=sc.nextLine();
  String c=sc.nextLine();
  String d=sc.nextLine();
  String e=sc.nextLine();
  int f=sc.nextInt();
    for(int i=0;i<3;i++)
    {
     System.out.printf("%s,%s,%s%n3",a,b,c);
    }
    // TODO, add your application code
    System.out.println("Hello World!");
  }catch (Exception cause) {
StackTraceElement elements[] = cause.getStackTrace();
for (int i = 0, n = elements.length; i < n; i++) {       
    System.err.println(elements[i].getFileName()
        + ":" + elements[i].getLineNumber() 
        + ">> "
        + elements[i].getMethodName() + "()");
}

}

我已尝试访问上面的堆栈跟踪信息,以找出我的 jdk 或其他可能导致此问题的软件出了什么问题

这是上述代码生成的输出

Scanner.java:864>> throwFor()

Scanner.java:1485>> next()

Scanner.java:2117>> nextInt()

Scanner.java:2076>> nextInt()

pester.java:21>> main()

任何帮助将不胜感激

【问题讨论】:

  • 只需在 catch 块中执行 cause.printStackTrace(),然后在此处发布您得到的结果
  • catch 块中的所有内容是什么?只需打印堆栈跟踪:e.printStackTrace();

标签: java exception io stack-trace


【解决方案1】:

我相信是您的nextInt() 调用,因为它不会占用返回线...添加一个额外的nextLine()(不必将其分配给任何东西)

正如@cdhowie 所解释的,nextInt() 必须使用一个整数值作为您的第六个输入。

【讨论】:

  • 我减少了输入的数量,将它们限制为仅一种数据类型,即字符串,并在尝试执行此修改后的代码后:public static void main(String[] args) { try { Scanner sc =新扫描仪(System.in);字符串 a=sc.nextLine();字符串 b=sc.nextLine();字符串 c=sc.nextLine(); for(int i=0;i
  • System.err.println(elements[i].getFileName() + ":" + elements[i].getLineNumber() + ">> " + elements[i].getMethodName() + “()”); } }
  • 我运行这个,提示输入我输入 2 个输入字符串:a b 程序终止,不要求第三个字符串(再输入 1 个输入)生成以下输出 a,,b a,,b a ,,b 我绝对相信这不是我的代码,而是一些出错的软件 PS。我尝试使用 System.err.println(cause.printStackTrace());它产生了一个编译错误,说这里不允许使用 void 类型我正在考虑卸载所有东西然后重新安装它
  • @RiteshBhakre 你是如何运行它的。通过 IDE,通过命令?我在 NetBeans 上运行过,这个更新后的代码看起来不错。
  • 我在 JCreator 上运行它......直到昨天,像这样的代码过去也可以无缝执行......从今天开始这个问题一直困扰着我...... . 你认为重新安装 jdk 会有什么不同吗?
【解决方案2】:

nextInt() 中的一个异常表明问题出在输入上——程序输入了五行,后面跟着不是整数的东西。

检查异常类型应该可以帮助您确定这一点。您应该收到InputMismatchException(读取不是整数的内容)或NoSuchElementException(没有更多输入要读取)。

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 2011-03-29
    • 2015-03-07
    • 2011-11-26
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多