Springen naar inhoud

java: binair optellen



  • Log in om te kunnen reageren

#1

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 16 januari 2013 - 17:25

Hallo iedereen,

Hier ben ik weer met een vraag. Dit is de vraag waar ik mee worstel: http://puu.sh/1OtsU .

Dit is mijn code:

public class Binaireoptelling {
/**
  * @param args
  */
public static void main(String[] args) {
  String s1 = "0011";
  String s2 = "011";
  while (s1.length() > s2.length()) {
   s2 = "0" + s2;
  }
  while (s1.length() < s2.length()) {
   s1 = "0" + s1;
  }
  String nieuwebit = "";
  int c = 0;
  String bin = "";
  for (int i = s1.length() - 1; i >= 0; i--) {
   int a = 0;
   int b = 0;
  
   if (s1.charAt(i)==1)
    a = 1;
   else a = 0;
   if (s2.charAt(i)==1)
    b = 1;
   else b = 0;
  
   int som = a + b + c;
   switch (som) {
   case 0:
    bin = "0";
    c = 0;
    break;
   case 1:
    bin = "1";
    c = 0;
    break;
   case 2:
    bin = "0";
    c = 1;
    break;
   case 3:
    bin = "1";
    c = 1;
    break;
   }
   if ((i==0)&&(som==3)){
    bin="11";
   }
   if ((i==0)&&(som==2)){
    bin="10";
   }
   System.out.println(bin);
   System.out.println(c);
   nieuwebit = bin+nieuwebit;
  }
  System.out.println(nieuwebit);
}
}

Het probleem is dat hij bij deze optelling altijd 0000 geeft. Bij grotere getallen geeft hij dan ook alleen maar 0'en. Ik heb wel al gemerkt dat hij de c niet veranderd en de bin ook niet. Ik heb dus gezocht waarom hij dat niet wil veranderen. Ik heb hier en daar al wat foutjes uitgehaald, maar nog wil hij het niet veranderen.
Het Wetenschapsforum heeft ook een facebook pagina!

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 16 januari 2013 - 17:56

if (s1.charAt(i)==1)

Wat geeft charAt() terug en waarmee vergelijk jij het?

#3

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 16 januari 2013 - 18:01

ja oke, karakters moeten met karakters vergeleken worden. Daar moet dus '1' staan ipv 1. Bedankt, ik zag het echt niet.
Het Wetenschapsforum heeft ook een facebook pagina!






Also tagged with one or more of these keywords: informatica

0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures