Java 尝试对二进制数求和时出现ArrayIndexOutOfBoundsException
//我是新来的,我试图在这里添加两个二进制数,但我得到了这个例外,我知道这可能不止是一件事或两件事改变这里的工作,但我真的想知道我在这里做错了什么,谢谢Java 尝试对二进制数求和时出现ArrayIndexOutOfBoundsException,java,exception,vector,binary,Java,Exception,Vector,Binary,//我是新来的,我试图在这里添加两个二进制数,但我得到了这个例外,我知道这可能不止是一件事或两件事改变这里的工作,但我真的想知道我在这里做错了什么,谢谢 import java.util.*; public class Problema2 { public static void main(String[] args) { int size; int tineminte=0; Scanner input = new Scanner(System.in); Sys
import java.util.*;
public class Problema2 {
public static void main(String[] args) {
int size;
int tineminte=0;
Scanner input = new Scanner(System.in);
System.out.println("Marimea celor doua numere ce urmeaza sa fie adunate:");
size=input.nextInt();
int counter=0;
Vector<Integer> A = new Vector<Integer>();
System.out.println("Primul numar in forma binara:");
while(counter<size)
{
A.add(counter,input.nextInt());
counter++;
}
System.out.println("Primul numar in forma binara este:");
for(counter=0;counter<size;counter++)
System.out.println(A.elementAt(counter));
counter=0;
Vector<Integer> B = new Vector<Integer>();
System.out.println("Al doilea numar in forma binara:");
while(counter<size)
{
B.add(counter,input.nextInt());
counter++;
}
System.out.println("Al doilea numar in forma binara este:");
for(counter=0;counter<size;counter++)
System.out.println(B.elementAt(counter));
Vector<Integer> C = new Vector<Integer>();
counter=size-1;
while(counter!=-1)
{
if(A.elementAt(counter)==1&&B.elementAt(counter)==0)
{ if(tineminte==1)
C.insertElementAt(0, counter);
else
C.insertElementAt(1, counter);
counter--;
}
else
if(A.elementAt(counter)==0&&B.elementAt(counter)==1)
{ if(tineminte==1){
C.insertElementAt(0, counter);
}
else
C.insertElementAt(1, counter);
counter--;
}
else
if(A.elementAt(counter)==0&&B.elementAt(counter)==0)
{ if(tineminte==1){
tineminte=0;
C.insertElementAt(1, counter);
}
else
C.insertElementAt(0, counter);
counter--;
}
else
if(A.elementAt(counter)==1&&B.elementAt(counter)==1)
{
if(tineminte==1){C.insertElementAt(1, counter);
}
else
C.insertElementAt(0, counter);
tineminte=1;
counter--;
}
}
System.out.println("Suma:");
for(int i:C)
System.out.println(C.elementAt(i));
}
}
import java.util.*;
公共类问题2{
公共静态void main(字符串[]args){
整数大小;
int-tinminite=0;
扫描仪输入=新扫描仪(System.in);
系统输出打印(“Marimea celor doua numere ce urmeaza sa fie adunate:”);
size=input.nextInt();
int计数器=0;
向量A=新向量();
System.out.println(“形式上的原始努玛:”);
while(计数器publicstaticvoidmain(字符串[]args){
整数大小;
int-tinminite=0;
扫描仪输入=新扫描仪(System.in);
系统输出
.println(“输入位数:”);
size=input.nextInt();
int计数器=0;
向量A=新向量();
System.out.println(“二进制输入第一个数字”);
while(计数器<大小){
A.add(counter,input.nextInt());
计数器++;
}
System.out.println(“二进制中的第一个数字(输出):”;
用于(计数器=0;计数器<大小;计数器++)
系统输出打印LN(A.elementAt(计数器));
计数器=0;
向量B=新向量();
System.out.println(“以二进制形式输入第二个数字:”);
while(计数器<大小){
B.add(counter,input.nextInt());
计数器++;
}
System.out.println(“二进制中的第二个数字(输出):”;
用于(计数器=0;计数器<大小;计数器++)
系统输出打印LN(B.elementAt(计数器));
向量C=新向量();
计数器=大小-1;
while(计数器!=-1){
如果(A.elementAt(计数器)==1和&B.elementAt(计数器)==0){
如果(Tineminite==1)
C.添加(0);
其他的
C.添加(1);
计数器--;
}如果(A.elementAt(计数器)==0&&B.elementAt(计数器)==1),则为else{
如果(Tineminite==1){
C.添加(0);
}否则
C.添加(1);
计数器--;
}如果(A.elementAt(counter)==0&&B.elementAt(counter)==0)
{
如果(Tineminite==1){
锡铵=0;
C.添加(1);
}否则
C.添加(0);
计数器--;
}如果(A.elementAt(counter)==1&&B.elementAt(counter)==1),则为else{
如果(Tineminite==1){
C.添加(1);
}否则
C.添加(0);
马齿苋=1;
计数器--;
}
}
//你忘了最后一点
如果(Tineminite==1)
C.添加(1);
System.out.println(“Suma:”);
对于(int i=C.size()-1;i>=0;i--){
系统输出println(C.elementAt(i));
}
}
注意:我试图只更改您代码中必要的部分。您不打算告诉我们导致异常的那一行吗?好吧,我不知道是哪一行,我所知道的只是代码中配置两个二进制数的二进制求和的部分。我是这个网站的新手,所以是的,我下次可能需要更具体一些,如果这让人困惑的话,我很抱歉。仔细想想,在我键入第二个二进制数进行汇总后会出现异常。行#包含在错误消息中,您在线程“main”java.lang.ArrayIndexOutOfBoundsException中发布了.exception的一部分。异常:2>0位于java.util.Vector.insertElementAt(未知来源)位于Problema2.main(Problema2.java:103)这是当我尝试将两个二进制数相加时得到的结果,每个二进制数有3个长度。Problema2.java:103
-这是文件,也是异常的第#行。使用这些信息,您应该可以简单地告诉我们错误发生的那一行。好的,但是通过使用add方法,我无法指定在哪里插入元素。@user3412387您正在按顺序插入数字。向量是数组的一种形式。@HotLicks,但如果没有空格,则无法插入。一个选项可以是在beggining创建一个for循环,即add(0)
。当然,您可以简单地对向量执行setSize
,使其具有适当的大小。
public static void main(String[] args) {
int size;
int tineminte = 0;
Scanner input = new Scanner(System.in);
System.out
.println("Input number of bits:");
size = input.nextInt();
int counter = 0;
Vector<Integer> A = new Vector<Integer>();
System.out.println("Input First number in binary");
while (counter < size) {
A.add(counter, input.nextInt());
counter++;
}
System.out.println("First number in binary (output):");
for (counter = 0; counter < size; counter++)
System.out.println(A.elementAt(counter));
counter = 0;
Vector<Integer> B = new Vector<Integer>();
System.out.println("Input second number in binary:");
while (counter < size) {
B.add(counter, input.nextInt());
counter++;
}
System.out.println("Second number in binary (output):");
for (counter = 0; counter < size; counter++)
System.out.println(B.elementAt(counter));
Vector<Integer> C = new Vector<Integer>();
counter = size - 1;
while (counter != -1) {
if (A.elementAt(counter) == 1 && B.elementAt(counter) == 0) {
if (tineminte == 1)
C.add(0);
else
C.add(1);
counter--;
} else if (A.elementAt(counter) == 0 && B.elementAt(counter) == 1) {
if (tineminte == 1) {
C.add(0);
} else
C.add(1);
counter--;
} else if (A.elementAt(counter) == 0 && B.elementAt(counter) == 0)
{
if (tineminte == 1) {
tineminte = 0;
C.add(1);
} else
C.add(0);
counter--;
} else if (A.elementAt(counter) == 1 && B.elementAt(counter) == 1) {
if (tineminte == 1) {
C.add(1);
} else
C.add(0);
tineminte = 1;
counter--;
}
}
// You forgot the last bit
if (tineminte==1)
C.add(1);
System.out.println("Suma:");
for(int i=C.size()-1;i>=0;i--) {
System.out.println(C.elementAt(i));
}
}