试图对二进制数求和时发生ArrayIndexOutOfBoundsException异常



//我是新来的,我试图在这里添加两个二进制数,但我得到这个例外,我知道它可能不止一件事或两个改变这里的工作,但我真的想知道我在这里做错了什么,谢谢!

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)); 
}
} 
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));
        }
    }

注意:我试图只改变你的代码的必要部分

最新更新