当前位置: 首页 > 知识库问答 >
问题:

简单二进制代码转换器的异常

戚哲
2023-03-14

我在Java(applet)中的简单二进制代码转换器遇到了一个问题:

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class dual_convert extends Applet implements ActionListener{
  TextField dual;
  TextField decimal;
  Button dual_b;
  Button decimal_b;
  Label dual_l;
  Label decimal_l;
  int decimal_i;
  String dual_s [];
  int dual_i;
  int decimal_e;

  public void init() {
    setLayout(null);

    dual = new TextField();
    dual.setBounds(90,10,100,25);
    add(dual);

    decimal = new TextField();
    decimal.setBounds(90,40,100,25);
    add(decimal);

    decimal_l = new Label("Decimal:");
    decimal_l.setBounds(10,40,80,25);
    add(decimal_l);

    dual_l = new Label("Binary:");
    dual_l.setBounds(10,10,80,25);
    add(dual_l);

    dual_b = new Button ("Convert");
    dual_b.setBounds(200,10,80,25);
    add(dual_b);
    dual_b.addActionListener(this);

    decimal_b = new Button ("Convert");
    decimal_b.setBounds(200,40,80,25);
    add(decimal_b);
    decimal_b.addActionListener(this);

  }

  public void actionPerformed (ActionEvent e) {
    if (e.getSource()==decimal_b) {
      decimal_i = Integer.parseInt(decimal.getText());  
      int ih = 0;
      dual.setText("");
      while (decimal_i>0) {
        dual.setText((decimal_i % 2)+dual.getText());
        decimal_i = decimal_i / 2; 
        ih++;
      }    
    }

    if (e.getSource()==dual_b) {
      dual_s = dual.getText().split("");
      dual_i = dual_s.length;
      decimal.setText("");
      for (int i=0;dual_i>0;dual_i--) {
        decimal_e = decimal_e + (Integer.parseInt(dual_s[dual_i]) * 2^i); 
        i++;
      } 
      decimal.setText(decimal_e+"");       
    } 
  }
}

线程“AWT-EventQueue-1”中的异常java.lang.ArrayIndexOutoFBoundsException:8在Dual.ActionPerformed(dual.java:65)在java.awt.Button.ProcessActionEvent(Button.java:409)在java.awt.Button.ProcessEvent(Button.java:377)在java.awt.Component.DispatchEventImpl(Component.java:4861)在java.awt.Component.DispatchEvent(ectionPrivilege(ProtectionDomain.java:76)在java.awt.EventQueue.DispatchEvent(EventQueue.java:699)在java.awt.EventDispatchThread.PumponeEventForFilters(EventDispatchThread.java:242)在java.awt.EventDispatchThread.PumpEventSforFilter(EventDispatchThread.java:161)在

对于二进制-->十进制转换,我使用这个系统(还有其他系统吗?):

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

线程“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_CONVER.ActionPerforded(DUAL_CONVER.JAVA:64)在java.awt.Button.ProcessActionEvent(Button.java:409)在java.awt.Button.ProcessEvent(java.awt.EventQueue$4。在java.awt.EventQueue$4处运行(EventQueue.java:700)在java.security.AccessController.DoPrivileed(本机方法)在java.security.ProtectionDomain$1处运行(EventQueue.java:76)在java.awt.EventQueue.DispatchEventEventForFilters(EventDispatchThread.PumpEventSforFilters(EventDispatchThread.java:699)在

共有1个答案

梁和颂
2023-03-14

问题就在这里:

 for (int i=0;dual_i>0;dual_i--) {
    decimal_e = decimal_e + (Integer.parseInt(dual_s[dual_i - 1]) * 2^i); 
    i++;
  } 

您应该使用dual_s[dual_i-1]而不是dual_s[dual_i],因为dual_i=dual_s.length;和数组索引以0开头

 类似资料:
  • 本文向大家介绍十进制到二进制转换,包括了十进制到二进制转换的使用技巧和注意事项,需要的朋友参考一下 十进制数字也可以转换为二进制格式。要将十进制数转换为二进制数,我们需要将数字除以2,直到达到0或1。然后,在每一步骤中,其余部分将分开存储以形成相反的二进制等效数。 在此算法中,我们将遵循递归方法。这将帮助我们在不使用堆栈数据结构的情况下解决问题。在实现中,我们知道函数的递归将遵循内部堆栈。我们将使

  • 我必须为赋值创建二进制到十进制的数字转换器。这项任务有一些限制。它们是:1。没有无限循环2。中断语句以退出循环3。没有标签或转到语句4。不使用整数。parseInt(字符串s,整数基数) 我得到了部分转换下来,但我有异常处理的问题。我试图在输入不是二进制时显示错误消息,并继续允许用户输入,每次无效的尝试都显示相同的错误消息。 我曾尝试用while和do-while循环替换for循环,但结果对我来说

  • 本文向大家介绍JavaScript转换二进制编码为ASCII码的方法,包括了JavaScript转换二进制编码为ASCII码的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript转换二进制编码为ASCII码的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 在你学习计算机的过程中,你可能已经接触了二进制。二进制在计算机科学中是很重要的,因为存储在计算机内的所有值都是以 0 和 1 存储的。如果没有能力在二进制数和普通字符串之间转换,我们与计算机之间的交互非常棘手。 整数值是常见的数据项。他们一直用于计算机程序和计算。我们在数学课上学习它们,当然最后用十进制或者基数 10 来表示它们。十进制 $$233_{10}$$ 以及对应的二进制表示 $$1110

  • 本文向大家介绍Python3进制之间的转换代码实例,包括了Python3进制之间的转换代码实例的使用技巧和注意事项,需要的朋友参考一下 Python3进制之间的转换 在Python里面实现进制之间的转换是非常方便的,有专门的函数来进行这个操作: 下面直接上代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我如何将一个写为二进制的字符串转换为二进制(字节数组)? 如果我有一个字符串: 下面是当我将二进制设置为字节数组时发生的情况(字节数组返回48,这是ASCII) 我不擅长解释,所以希望上面的例子足以告诉你我想要什么。