Hallo zusammen,
ich muss für die Uni ein Programm schreiben (Russische Bauernmultiplikation). An sich klappt alles, ich weiß jedoch nicht, wie ich die einstelligen Zahlen auf der linken Seite eins nach rechts verschiebe (ohne dass die Zahlen auf der rechten Seite ebenfalls um 1 verschoben werden) und wie ich die Anzahl der "----" und "====" so variiere, dass es mit der länge vom Ergebnis identisch ist. (Siehe Anhang)
Danke für jede Hilfe und hier ist mein Code =)
public class Bauernmultiplikation {
public static void main(String[] args) {
int num1 = Integer.parseInt(args[0]);
int num2 = Integer.parseInt(args[1]);
printBoard(num1,num2);
System.out.println("=====");
System.out.println(" "+ multipliziere(num1,num2));
}
private static void printBoard(int num1, int num2) {
System.out.println(String.valueOf(num1) + " * " + String.valueOf(num2));
System.out.println("-----");
while(num1>=1) {
if(num1 % 2 == 0)
System.out.println(Integer.toString(num1) + " " + Integer.toString(num2) + " X");
else
System.out.println(Integer.toString(num1) + " " + Integer.toString(num2));
num1/=2;
num2*=2;
}
}
public static int multipliziere(int x, int y){
if(x==1)
return y;
if(x%2!=0)
return y + multipliziere(x/2, y*2);
else
return multipliziere(x/2, y*2);
}
}
ich muss für die Uni ein Programm schreiben (Russische Bauernmultiplikation). An sich klappt alles, ich weiß jedoch nicht, wie ich die einstelligen Zahlen auf der linken Seite eins nach rechts verschiebe (ohne dass die Zahlen auf der rechten Seite ebenfalls um 1 verschoben werden) und wie ich die Anzahl der "----" und "====" so variiere, dass es mit der länge vom Ergebnis identisch ist. (Siehe Anhang)
Danke für jede Hilfe und hier ist mein Code =)
public class Bauernmultiplikation {
public static void main(String[] args) {
int num1 = Integer.parseInt(args[0]);
int num2 = Integer.parseInt(args[1]);
printBoard(num1,num2);
System.out.println("=====");
System.out.println(" "+ multipliziere(num1,num2));
}
private static void printBoard(int num1, int num2) {
System.out.println(String.valueOf(num1) + " * " + String.valueOf(num2));
System.out.println("-----");
while(num1>=1) {
if(num1 % 2 == 0)
System.out.println(Integer.toString(num1) + " " + Integer.toString(num2) + " X");
else
System.out.println(Integer.toString(num1) + " " + Integer.toString(num2));
num1/=2;
num2*=2;
}
}
public static int multipliziere(int x, int y){
if(x==1)
return y;
if(x%2!=0)
return y + multipliziere(x/2, y*2);
else
return multipliziere(x/2, y*2);
}
}