StackOverflowError计算BigInteger的阶乘?

我正在尝试编写一个Java程序来计算大数的阶乘。 似乎BigInteger无法容纳这么大的数字。 以下是我写的(直截了当的)代码。 public static BigInteger getFactorial(BigInteger num) { if (num.intValue() == 0) return BigInteger.valueOf(1); if (num.intValue() == 1) return BigInteger.valueOf(1); return num.multiply(getFactorial(num.subtract(BigInteger.valueOf(1)))); } 上述程序在5022中处理的最大数量,之后程序抛出StackOverflowError 。 有没有其他方法来处理它?

获取HeadlessException:未设置X11 DISPLAY变量

线程“main”中的exceptionjava.awt.HeadlessException:没有设置X11 DISPLAY变量,但是该程序执行了一个需要它的操作。 at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159) 在java.awt.Window。(Window.java:432) 在java.awt.Frame。(Frame.java:403) 在javax.swing.JFrame。(JFrame.java:202) 在DrawGUI。(DrawGUI.java:15) 在ShapeCreator。(ShapeCreator.java:31) 在ShapeCreator.main(ShapeCreator.java:138) 这个错误信息是什么意思? 我该如何解决?

ObjectInputStream的(socket.getInputStream()); 不起作用

我正在编写一个类来与服务器进行通信,但是当它尝试在输入流的帮助下构造ObjectInputStream时程序正在冻结。 Theres没有exception,程序仍然在运行,但挂起在它试图构造ObjectInputstream的行中。 下面是我的问题所在方法的代码: @Override public void connect(String ip, int port) throws UnknownHostException, IOException { Socket socket = new Socket(ip, port); out = new ObjectOutputStream(socket.getOutputStream()); InputStream is = socket.getInputStream(); in = new ObjectInputStream(is); } 这是整个class级的代码: package Client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public […]

AccessController.doPrivileged

我试图找出一些遗留代码正在做什么。 这条线到底在做什么,为什么我会这样需要呢? String lineSeparator = (String) java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction(“line.separator”)); 我在Weblogic 8上运行的web / ejb应用程序的logger实现中找到了它。据我所知,没有启用特殊的安全策略。 (我不喜欢从sun。*包中导入,所以我想摆脱这条线;-)

为什么我的字符串比较不起作用?

好吧,这是愚蠢的,但wtf还在继续? 我在servlet中有一个String变量,它接受一个参数的值,并根据该值进行测试以执行某些操作,但if不起作用。 问题是什么? String action = request.getParameter(“action”); System.out.println(“Action: ” + action); // I put 2 ifs to be sure, but not even one is working if(action.equals(“something”)) { System.out.println(“hey”); } if(action.trim() == “something”) { System.out.println(“hey”); } 在控制台上,System.out.println向我显示action的值是“某事” Action: something

Hibernate抛出奇怪的错误:未映射类

这是错误 org.hibernate.hql.ast.QuerySyntaxException: Payment is not mapped [select p from Payment p] 我不明白为什么会抛出这个错误,应该映射类,因为我会简要地向您展示。 我有一个非常基本的配置,如下所示: http : //docs.jboss.org/hibernate/annotations/3.5/reference/en/html/ch01.html 我试图将映射定义添加到hibernate.cfg.xml中,我也尝试以编程方式添加它。 他们都没有工作。 谁能告诉我在这里我错过了什么? (这不是我第一次组建一个Hibernate项目) 这是hibernate.cfg.xml org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/paymentsdatabase xxx xxx true thread create <!– –> 数据库连接工作正常,我已经测试过了 这是我的HibernateUtil中的静态初始化程序 static { try { // Create the SessionFactory from standard (hibernate.cfg.xml) // config file. sessionFactory = new AnnotationConfiguration() .addPackage(“com.lsyh.swati.zk.model”) .addAnnotatedClass(Payment.class) .configure().buildSessionFactory(); } […]

如何从PNG文件中读取像素?

我知道如何使用Robot,Windowtester或FEST捕获屏幕截图。 我也知道如何使用机器人从屏幕上读取像素。 int x = 10; int y = 10; Color px = getPixelColor(int x, int y); 但是,我不知道如何从已捕获的图像中读取像素。 我打算将当前图像与文件中的图像进行比较。 让我们说两者都是PNG。 是否有任何框架可用于逐像素地比较图像?

你如何逃避属性文件中的冒号(:)?

我正在使用属性文件来存储我的应用程序的配置值。 在其中一个实例中,我必须将值存储为xxx:yyy:zzz 。 当我这样做时,冒号用反斜杠\转义,导致属性文件中的值显示为xxx\:yyy\:zzz 。 我知道冒号:是Properties Java类的标准分隔符。 但是我仍然需要保存值而不使用反斜杠\ 。 有关如何处理这个的任何建议?

枚举中的枚举

这不是我被困住的问题,而是我正在寻找一种整洁的方式来编写我的代码。 基本上,我正在编写一个事件驱动的应用程序。 用户触发事件,事件被发送到适当的对象,对象处理事件。 现在我正在编写偶数处理程序方法,我希望使用switch语句来确定如何处理事件。 现在,当我正在研究一般结构时,事件类非常简单: public class Event { public static enum Action { MOVE, FOO, BAR } private Action action; private int duration; public Event(Action action, int duration) { this.action = action; this.duration = duration; } public Action getAction() { return action; } public int getDuration() { return duration; } 然后,在另一堂课中,我会有类似的东西: public void handleEvent(Event […]

如何完美模拟KeyEvents?

我怎样才能构建自己的KeyEvent对象,当最终用户键入内容时,它完全(或非常接近)匹配我从KeyListener收到的对象? 例如,我有一个英国的ISO键盘布局,并键入”我按Shift+2字符。如果我使用KeyListener在JFrame上记录这个,我收到以下事件: java.awt.event.KeyEvent[KEY_PRESSED,keyCode=16,keyText=Shift,keyChar=Undefined keyChar,modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_LEFT,rawCode=16,primaryLevelUnicode=0,scancode=42,extendedKeyCode=0x10] on frame0 java.awt.event.KeyEvent[KEY_PRESSED,keyCode=50,keyText=2,keyChar='”‘,modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_STANDARD,rawCode=50,primaryLevelUnicode=50,scancode=3,extendedKeyCode=0x32] on frame0 java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='”‘,modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0,extendedKeyCode=0x0] on frame0 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=16,keyText=Shift,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=16,primaryLevelUnicode=0,scancode=42,extendedKeyCode=0x10] on frame0 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=50,keyText=2,keyChar='”‘,keyLocation=KEY_LOCATION_STANDARD,rawCode=50,primaryLevelUnicode=50,scancode=3,extendedKeyCode=0x32] on frame0 我想创建一个方法,我将”作为一个char参数,它将返回上面列出的KeyEvents数组。 我的问题是: 在KEY_PRESSED和KEY_RELEASED事件中, keyChar='”‘表示按下的字符( ” ),但keyCode=50表示“未移位”的ASCII值(也称为2 )。 我需要知道如何从”角色”获取这个非移位值。 对于不同的键盘布局,此非移位值也将不同。 例如,美国ANSI布局要求Shift+’键入”键”,这意味着keyCode将是39而不是50。 在某些键盘布局上,Shift键需要键入键,而不是其他键。 例如, #字符在美国ANSI键盘上需要Shift+3 ,但在UK ISO键盘上不需要Shift+3键。 我需要知道是否应该模拟移位按下/释放事件并提供移位修改器。 任何有关如何解决这些问题的见解将不胜感激。 我还应该注意,在我的情况下不能使用Robot类。