Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单二进制代码转换器异常(2)_Java_Arrays_Exception_Binary_Decimal - Fatal编程技术网

Java 简单二进制代码转换器异常(2)

Java 简单二进制代码转换器异常(2),java,arrays,exception,binary,decimal,Java,Arrays,Exception,Binary,Decimal,我的Java简单二进制代码转换器(小程序)有问题: 按Convert Binary to Decimal可引发此异常: 线程“AWT-EventQueue-1”中出现异常 java.lang.NumberFormatException:对于位于 forInputString(NumberFormatException.java:65) 位于java.lang.Integer.parseInt(Integer.java:504) java.lang.Integer.parseInt(Integer

我的Java简单二进制代码转换器(小程序)有问题:

按Convert Binary to Decimal可引发此异常:

线程“AWT-EventQueue-1”中出现异常 java.lang.NumberFormatException:对于位于 forInputString(NumberFormatException.java:65) 位于java.lang.Integer.parseInt(Integer.java:504) java.lang.Integer.parseInt(Integer.java:527)位于 dual_convert.actionPerformed(dual_convert.java:65)在 java.awt.Button.processActionEvent(Button.java:409)位于 java.awt.Button.processEvent(Button.java:377)位于 dispatchEventImpl(Component.java:4861)位于 dispatchEvent(Component.java:4687)位于 dispatchEventImpl(EventQueue.java:729)位于 访问$200(EventQueue.java:103) java.awt.EventQueue$3.run(EventQueue.java:688)在 java.awt.EventQueue$3.run(EventQueue.java:686)在 java.security.AccessController.doPrivileged(本机方法)位于 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 在java.awt.EventQueue$4.run(EventQueue.java:702)处 java.awt.EventQueue$4.run(EventQueue.java:700)在 java.security.AccessController.doPrivileged(本机方法)位于 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:699) java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

对于二进制-->十进制转换,我使用此系统(是否有其他系统?):

100101=[(1)×25]+[(0)×24]+[(0)×23]+[(1)×22]+[(0)×21]+[(1)×20]

100101=[1×32]+[0×16]+[0×8]+[1×4]+[0×2]+[1×1]

100101=3710


这句话告诉你:

decimal_i = Integer.parseInt(decimal.getText());

有一个问题,即,您试图将空白字符串转换为整数。您必须防范这种情况。

与Splungebob的回答一样,您需要防范这种情况,但转换可以通过API完成。请参阅方法。

dual_s = dual.getText().split("");
返回带前导空字符串的
字符串[]
。我建议您使用
char[]
来存储输入字符串的每个字符,而不是现在这样做。你可以用它

dual.getText().toCharArray();

并使用而不是
Integer.parseInt()遍历它

我将给您一个提示,让您进行调试。错误消息
NumberFormatException:对于输入字符串:“
表示您正在尝试将空字符串转换为数字。这不起作用。这很清楚,但即使我在dual TextField中写入了一些内容,它也不应该是emtpy。好吧,我发现了问题:split(“”)不会创建零,因此当for循环达到dual_I=0时,它会抛出异常。我不得不将条件更改为dual_I>1。不,当
s
为空字符串时,此方法如何帮助?@jlordo也许我的措辞不明确,我现在已经编辑了它。我的意思是仍然需要输入验证,但是parseInt支持从基数2到基数10的实际转换。第65行是'decimal_e=decimal_e+(Integer.parseInt(dual_s[dual_I-1])*2^I);'不是你发布的那行。@user2651027:then(显然)
dual\u s[dual\u i-1]
是一个空字符串。意思是你的调用,
Integer.parseInt(someText)
其中someText是空的。
dual.getText().toCharArray();