Java Logic Error

JC0133

Senior member
Nov 2, 2010
201
1
76
I am writing a test program to add binary numbers and for some reason when I leave my loop my correct values get reset. Not sure why.

I print the results to the screen and in the loop it shows 1 1 in the output but out of the loop it is 1 0. So I am not sure why my array index 1 and beyond gets reset to zero.

Code:
public class testing {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String test = "110011";
        String test2  = "1010";
        int fNumL = 0;
        int sNumL = 0;
        int cBit = 0;
       
        calculations getResults = new calculations();
       
        //value = Integer.parseInt(test);
       

       
       
          int[] digits1 = new int[test.length()];

          for(int i = 0; i<test.length(); ++i){
            digits1[i] = Integer.parseInt(test.substring(i, i+1));
          }
         
          int[] digits2 = new int[test2.length()];

          for(int i = 0; i<test2.length(); ++i){
            digits2[i] = Integer.parseInt(test2.substring(i, i+1));
          }
         
          fNumL = digits1.length;
          sNumL = digits2.length;
         
          /*
          //Test cases
          System.out.println("Here is fNumL " + fNumL);
          System.out.println("Here is sNumL " + sNumL);
         
          System.out.println("Here are values from first digits1 array");
         
          for(int i = 0; i < digits1.length; i++) {
              System.out.print(digits1[i] + " ");
          }
          System.out.println("");
         
          System.out.println("Here are values from second digits2 array");
         
          for(int i = 0; i < digits2.length; i++) {
              System.out.print(digits2[i] + " ");
          }
          System.out.println("");
          */
         
         
         
          if(fNumL > sNumL) {
            int[] results = new int[fNumL];
            for (int j = (digits1.length - digits2.length)-1; j >= 0; j--) {
             
             
              for (int i = digits2.length-1; i >= 0; i--) {
                getResults.addValues(digits1[i],digits2[i],cBit);
                results[i] = getResults.results;
                cBit = getResults.carryB;
               
              }//end of for loop for smaller digit
              results[j] = digits1[j];
             
             
            //  System.out.println(digits1[j]);
              System.out.println(results[j]);
             
              System.out.println(" Here is J " + j);
             
            }//end of for loop for bigger digit
           
            System.out.println(results[0] + " " + results[1]);
           
           // getResults.showAnswer(results);
           

          }//end of if fNumL > sNumL
          else if(sNumL > fNumL){
            int[] results = new int[sNumL];
           
          }//end of else fNumL > sNumL
          else {
            int[] results = new int[sNumL];
          }
         
   
  }
         

}



class calculations {
    public int results;
    public int carryB;
   
   
    public void addValues(int value1, int value2, int cBit) {
       
        if(value1 == 1 && value2 == 0 && cBit == 0) {
            results = 1;
            carryB = 0;
           
        }else if(value1 == 0 && value2 == 1 && cBit == 0) {
            results = 1;
            carryB = 0;
        }else if(value1 == 1 && value2 ==1 && cBit == 0) {
            results = 0;
            carryB = 1;
        }else if(value1 == 1 && value2 == 0 && cBit == 1) {
            results = 0;
            carryB = 1;
        }else if(value1 == 0 && value2 == 1 && cBit == 1) {
            results = 0;
            carryB = 1;
        }else if(value1 == 0 && value2 == 0 && cBit == 0) {
            results = 0;
            carryB = 0;
        }else if(value1 == 1 && value2 == 1 && cBit == 1) {
            results = 1;
            carryB = 1;
        }
       
    }
   
    public void showAnswer(int[] results) {
        for(int i = 0; i < results.length; i++) {
            System.out.print(results[i]);
        }
    }
   
}
 

KIAman

Diamond Member
Mar 7, 2001
3,342
23
81
Look carefully at this line in your inner loop and pay close attention to the loop counters.

Code:
results[i] = getResults.results;

Eventually, whatever you put in results from the outer loop will get overwritten by the inner loop.

Also, wtf are you even doing with this code?
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |