Java 为什么此代码在CodeEval上不起作用?

Java 为什么此代码在CodeEval上不起作用?,java,Java,下面的代码将序列号作为txt文件的参数,在我的计算机上正常工作。每个数字都写在一行上。下面是代码: import java.io.*; import java.util.*; import javax.swing.JOptionPane; public class Main { public static int fiboComputingAct(int serial){ if (serial == 1 || serial == 2) { ret

下面的代码将序列号作为txt文件的参数,在我的计算机上正常工作。每个数字都写在一行上。下面是代码:

import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;

public class Main {
    public static int fiboComputingAct(int serial){
        if (serial == 1 || serial == 2) {
            return 1;
        }else{
            int nMinus2 = 1;
            int nMinus1 = 1;
            int result = 0;
            for (int i = 3; i <= serial; i++){
                result = nMinus1 + nMinus2;
                nMinus2 = nMinus1;
                nMinus1 = result;   
            }
            return result;
        }   
    }

    public static void main (String [] args){
        try {
            File textFile = new File("texts/1.txt"); //"texts/1.txt" will be replaced on args[0] in codeeval
            Scanner scan = new Scanner(textFile);
            int fiboSerialNumber;
            while (scan.hasNextLine()) {
                fiboSerialNumber = scan.nextInt();
              System.out.println(fiboComputingAct(fiboSerialNumber));
                }
            } catch (Exception e) {JOptionPane.showMessageDialog(null, "File is not found");}   
        }   
    }
但它在CodeEval中不起作用。这就是站点编译器所说的:

Fontconfig错误:无法在线程中加载默认配置文件异常 main java.awt.HeadlessException:未设置X11显示变量, 但是这个程序执行了一个需要它的操作。在 java.awt.GraphicsEnvironment.checkHeadlessGraphicsEnvironment.java:207 java:535at java.awt.Frame.Frame.java:420 at java.awt.Frame.Frame.java:385 at swing.SwingUtilities$SharedOwnerFrame.SwingUtilities.java:1759 在 swing.SwingUtilities.getSharedOwnerFrameSwingUtilities.java:1834 java:1697 at javax.swing.JOptionPane.showOptionDialogJOptionPane.java:863 at javax.swing.JOptionPane.showMessageDialogJOptionPane.java:667 at javax.swing.JOptionPane.showMessageDialogJOptionPane.java:638 at javax.swing.JOptionPane.showMessageDialogJOptionPane.java:609 at Main.mainMain.java:45


根据堆栈跟踪,此处发生错误:

JOptionPane.showMessageDialog(null, "File is not found");
看一下的文档,我们发现它是:

在不支持键盘、显示器或鼠标的环境中调用依赖于键盘、显示器或鼠标的代码时引发

还有一点让我相信CodeEval可能正试图在无头linux环境中执行您的代码


要避免此错误,只需在catch块中用简单的e.printStackTrace替换图形错误报告。

您是指args[0]?因此,CodeEval似乎没有为您提供一个GUI来显示错误消息。当你遇到异常时,不要弹出一个JOptionPane,只要e.printStackTrace即可。@azurefrog:你应该把它作为一个答案发布。