6sic6
Legacy Member
Hello,
Had volgende oef als onderdeel van mn herexamen, heb deze nu is hermaakt, maar geraak er niet uit:
Hier komt ie:
Maak de klasse GroteGetallen aan, zodanig dat onderstaande main methode correct werkt. De ingegeven getallen zijn zeer groot (100en cijfers). De getallen worden in een array geplaats waarbij elk element van de array plaats geeft aan 1 cijfer (vb rij[1] = 5).
Volgende code heb ik al:
Wat er nu niet werkt:
Iemand een idee ? Er zijn er nog een paar die binnenkort herexamen hebben, en die zouden het wel apprecieren mocht ik hen de correcte oplossing door kunnen sturen!!
Had volgende oef als onderdeel van mn herexamen, heb deze nu is hermaakt, maar geraak er niet uit:
Hier komt ie:
Maak de klasse GroteGetallen aan, zodanig dat onderstaande main methode correct werkt. De ingegeven getallen zijn zeer groot (100en cijfers). De getallen worden in een array geplaats waarbij elk element van de array plaats geeft aan 1 cijfer (vb rij[1] = 5).
Code:
public class Test
{
public static void main (String [] args)
{
Input inp = new Input();
System.out.print("Geef de waarde in:");
String s = inp.readLine();
GroteGetallen gg1 = new GroteGetallen(s);
//input is een getal van 100en cijfers groot
GroteGetallen gg2 = new GroteGetallen(100,true);
// Eerste parameter: aantal getallen
// Tweede parameter: true > random getallen gegenereert
// false > alle getallen zijn nul
if(gg1.gelijk(gg2))
System.out.println("De getallen zijn gelijk!");
GroteGetallen gg3 = GroteGetallen.som(gg1,gg2);
System.out.println(gg3);
}
}
Volgende code heb ik al:
Code:
import java.util.Random;
class GroteGetallen
{
private int [] rij;
public GroteGetallen(String str)
{
rij = new int [str.length()];
for (int i = 0; i < rij.length; i++)
{
rij[i] = Integer.parseInt(str.substring(i,(i+1)));//nen int maken van een karakter van de string namelijk de string
//op plaats i en i+1 ( we maken ne substring)
}
}
public GroteGetallen(int a, boolean c)
{
rij = new int[a];
Random rand = new Random();
int i = 0;
if(c) // wat dus betekent, if (c == true)
{
while(i<a)
{
rij[i] = rand.nextInt(9);
i++;
}
}
else
{
while(i<a)
{
rij[i]=0;
i++;
}
}
}
public int [] getGroteGetallen()
{
return rij;
}
public static GroteGetallen som(GroteGetallen gg1, GroteGetallen gg2)
{
int [] rij1 = gg1.getGroteGetallen();
int [] rij2 = gg2.getGroteGetallen();
String hulp = new String();
String eind = new String();
for(int i = (rij1.length-1); i>=0; i--)
{
int test = rij1[i]+rij2[i];
if(test>=10)
{
rij1[i-1] = rij1[i-1] +1;
hulp.concat(String.valueOf(test-10));
}
else
hulp.concat(String.valueOf(test));
}
for(int i = hulp.length(); i > 0; i--)
{
eind.concat(hulp.substring((i-1),i));
}
GroteGetallen test = new GroteGetallen(eind);
return test;
}
public boolean gelijk(GroteGetallen gg2)
{
boolean gelijk = true;
int i=0;
int [] rij2 = gg2.getGroteGetallen();
while(i< rij.length && gelijk)
{
if(rij[i] != rij2[i])
gelijk = false;
i++;
}
return gelijk;
}
}
Wat er nu niet werkt:
- De vergelijking verloopt niet goed, want hij zegt altijd dat het gelijk is. Volgens mij zit ik ergens met een verkeerde redenering ivm het van ints naar strings en van strings naar ints schrijven.
- Uitschrijven werkt niet ('t is een object dat moet uitgeschreven worden). Ik weet dat er een methode bestaat die opgeroepen wordt als je System.out.println(gg3); doet, maar kan me niet meer herinneren welke. Eens ik die methodenaam weet kan ik zelf mn methode om uit te schrijven wel maken natuurlijk ...
Iemand een idee ? Er zijn er nog een paar die binnenkort herexamen hebben, en die zouden het wel apprecieren mocht ik hen de correcte oplossing door kunnen sturen!!
):
.
.
