Java :: Aufgabe #11
8 Lösungen

Multiplikation ohne zu multiplizieren
Anfänger - Java
von Gustl
- 11.11.2012 um 17:24 Uhr
Erstellen Sie ein Konsolenprogramm welches dem Benutzer auffordert 2 Zahlen einzugeben, diese sollen dann multipliziert werden, jedoch ist nur die Grundrechenart Addition erlaubt.
Wenn einer der 2 Zahlen keine Zahl ist, soll eine Fehlermeldung ausgegeben werden und der Benutzer noch einmal aufgefordert werden eine Zahl einzugeben.
Wenn einer der 2 Zahlen keine Zahl ist, soll eine Fehlermeldung ausgegeben werden und der Benutzer noch einmal aufgefordert werden eine Zahl einzugeben.
Lösungen:
Rekursive Loesung, auch wenn iterativ hier eigentlich effizienter wäre.
Java-Code

import java.util.Scanner; public class Mult { private static Scanner sc; private static int a, b; public static void main(String[] args) { sc = new Scanner(System.in); System.out.println("Bitte erste Zahl eingeben."); a = sc.nextInt(); System.out.println("Bitte zweite Zahl eingeben."); b = sc.nextInt(); int ergebnis = mult(a, b); System.out.println(a + " mal " + b + " = " + ergebnis); } public static int mult(int a, int b) { if(a == 1) { return b; } else { return mult(a-1, b) + b; } } }

//©2012 by Julius J. Hoffmann //written with Eclipse import java.util.Scanner; //importiert die Scanner-Klasse public class Multiplikation { //"ausführende Klasse" public static void multiplizieren() { //Methode zur Multiplikation try { //Anfang try-catch-Block System.out.println("Bitte geben Sie die 1. Zahl ein:"); //Konsolenausgabe Scanner s = new Scanner(System.in); //Anlegen des Scannerobjekts float a = s.nextFloat(); //Initialisieren der Var. a System.out.println("Bitte geben Sie die 2. Zahl ein:"); //Konsolenausgabe float b = s.nextFloat(); //Initialisieren der Var. a int h = hilfsMethode(b); //Aufruf hilfsMethode & Speichern in h float lsg = a; //a übergibt Wert an Hilfsvariable lsg b *= h; //b = b*h (erzeugt ein ganzzahliges b) for (; b>1; b--) { //for-Schleife die bx durchläuft lsg += a; //lsg = lsg + a (Iteration) } lsg /= h; //lsg wird durch h geteilt (ganze Zahl wird wd. zu kommazahl) System.out.println("Multipliziert: " + lsg); //Konsolenausgabe Lösung } catch (Exception e) { //Auffangen einer evtl. falschen Eingabe System.out.println("Falscher Eingabewert"); //Konsolenausgabe multiplizieren(); //Wiederaufruf der Methode } //Ende catch } //Ende Methode public static int hilfsMethode(float number) { //Hilfsmethode zur Ermittlung der Nachkommastellen String zahl = Float.toString(number); //verwandelt number in einen String zahl = zahl.substring(zahl.indexOf(".")+1); //entfernt die Vorkommastellen & Komma int h = 1; //Initialisieren der Hilfsvariable h mit 1 int i = zahl.length(); //setzt die Zählervariable i auf die Länge der Nachkommastellen von number while (i>0) { //solange i > 0 ist h *= 10; //h wird mit 10 multipliziert (es werden so viele 0 angehängt, wie nachkommastellen) i--; //i wird um 1 heruntergezählt } return h; //gibt h zurück } public static void main(String[] args) { //"ausführende Methode" multiplizieren(); //AUfruf multiplizieren } }

/** * @author ElPapito * @date 05.05.2015 */ import java.util.Scanner; public class MultiplikationOhneZuMultiplizieren { public static void main(String[] args) { int a = nextInt("1. Zahl: "); int b = nextInt("2. Zahl: "); System.out.print(a + " * " + b + " = "); if (a < 0) { a = -a; b = -b; } int c = 0; for (int i = 0; i < a; i++) { c = c + b; } System.out.println(c); } public static int nextInt(String text) { Scanner scanner = new Scanner(System.in); String input; while (true) { System.out.print(text); input = scanner.next(); try { int i = Integer.parseInt(input); return i; } catch (NumberFormatException e) { System.out.println("Fehlermeldung: Bitte ganze Zahl eingeben."); } } } }

import java.util.Scanner; import java.util.InputMismatchException; /** * Erstelle ein Programm das den Benutzer auffordert zwei ganze Zahlen einzugeben. * Diese sollen dann multipliziert werden, jedoch soll dafür nur die Addition benutzt werden. * Wenn eine eingegebene Zahl nicht gerade oder keine Zahl ist soll eine Fehlermeldung ausgegeben werden. * Danach soll der Benutzer erneut aufgefordert werden eine ganze Zahl einzugeben. * * @author Nolyn * @version 01.09.2015 */ public class MultOhneMult { public static void main(String args[]){ while(true){ // eine Endlosschleife stellt sicher, dass wieder eine Zahl eingegeben werden kann try{ // sollte ein Fehler auftreten System.out.println("Gib eine ganze Zahl ein."); int Zahl1 = new java.util.Scanner(System.in).nextInt(); // die erste Zahl wird in "Zahl1" gespeicher System.out.println("Gib noch eine ganze Zahl ein."); int Zahl2 = new java.util.Scanner(System.in).nextInt(); // die zweite Zahl wird in "Zahl2" gespeichert System.out.println(Multiplizieren(Zahl1, Zahl2)); // ruft die Methode "Multiplizieren" mit den Parametern break; // "break" bricht die Endlosschleife ab wenn zwei gültige Zahlen eingegeben wurden } // "Zahl1" und "Zahl2" auf und führt sie aus catch(InputMismatchException e){ System.err.println("Du hast keine ganze Zahl eingegeben!"); System.out.println("Versuch es noch einmal."); } } } public static int Multiplizieren(int Z1, int Z2){ int Ergebnis = 0; for(int i = 1; i <= Z2; i++){ // so lange i kleiner als die zweite eingegeben Zahl ist Ergebnis = Ergebnis + Z1; // wird auf das Ergebnis die erste Zahl addiert } return Ergebnis; } }
Anmerkung: Ich arbeite mit dem Programm BlueJ
Java-Code

import javax.swing.JOptionPane; import java.text.DecimalFormat; /** * Ein Programm welches Multiplikation nur mithilfe von Additon durchführt. * * @author (nOrdan) * @version (02.06.2019) */ public class MultiplikationMitAddition { DecimalFormat df = new DecimalFormat("0.00"); public static void main(String [] args) { MultiplikationMitAddition mpa = new MultiplikationMitAddition(); mpa.inputs(); } private void inputs() { boolean valid1 = false; double ersteZahl = 0; double zweiteZahl = 0; while (valid1 == false) { String input1 = userInput("Bitte die erste Zahl eingeben"); try { errorUserInput(input1); ersteZahl = parseDouble(input1); valid1 = true; } catch(Exception e) { errorMessage("Invalid user input","Input Error"); } } valid1 = false; while (valid1 == false) { String input2 = userInput("Bitte die zweite Zahl eingeben"); try { errorUserInput(input2); zweiteZahl = parseDouble(input2); valid1 = true; } catch(Exception e) { errorMessage("Invalid user input","Input Error"); } } berechnungen(ersteZahl,zweiteZahl); } private void berechnungen(double ersteZahl, double zweiteZahl) { double ergebnis = 0; for (int i = 0; i < ersteZahl; i++) { ergebnis += zweiteZahl; } JOptionPane.showMessageDialog(null,"Das Ergebnis ist auf zwei Nachkommastellen gerundet: " + df.format(ergebnis), "Ergebnis",JOptionPane.INFORMATION_MESSAGE); } private String userInput(String message) { return JOptionPane.showInputDialog(message); } private double parseDouble(String input) { return Double.parseDouble(input); } private void errorUserInput(String input) { if (input == null) { System.exit(0); //Drückt der User auf abbrechen wird null zurück gegeben und das Programm wird beendet } else if (input.length() == 0) { } } private void errorMessage(String message,String errorName) { JOptionPane.showMessageDialog(null,message,errorName,JOptionPane.ERROR_MESSAGE); } }

import java.util.*; public class MultiplikationOhneMal { public static void main(String[] args) { int res; res = multiplizieren(); System.out.print("Ergebnis:\t" + res); } public static int multiplizieren() { int zahl1, zahl2, res = 0; try { Scanner scanner = new Scanner(System.in); System.out.println("Multiplikation ohne Multiplizieren!"); System.out.print("\nDie erste Zahl eingeben:\t"); zahl1 = scanner.nextInt(); System.out.print("\nDie zweite Zahl eingeben:\t"); zahl2 = scanner.nextInt(); for(int i = 0; i < zahl2; i++) { res +=zahl1; } scanner.close(); } catch (Exception e) { System.out.println("Ungültige Eingabe!"); multiplizieren(); } return res; } }

package de.patrick260.trainYourProgrammer.exercise_11; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class MultiplikationOhneZuMultiplizieren { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Bitte gebe eine Zahl ein: "); String input = ""; try { input = reader.readLine(); } catch (IOException e) { e.printStackTrace(); } while (!isInt(input)) { System.out.println("Invalid input!"); System.out.print("Bitte gebe eine Zahl ein: "); try { input = reader.readLine(); } catch (IOException e) { e.printStackTrace(); } } int a = Integer.parseInt(input); System.out.print("Bitte gebe eine Zahl ein: "); input = ""; try { input = reader.readLine(); } catch (IOException e) { e.printStackTrace(); } while (!isInt(input)) { System.out.println("Invalid input!"); System.out.print("Bitte gebe eine Zahl ein: "); try { input = reader.readLine(); } catch (IOException e) { e.printStackTrace(); } } int b = Integer.parseInt(input); int ergebnis = 0; for (int i = 0; i < b; i++) { ergebnis = ergebnis + a; } System.out.println(a + " * " + b + " = " + ergebnis); } public static boolean isInt(String s) { try { Integer.parseInt(s); return true; } catch (NumberFormatException numberFormatException) { return false; } } }

/** Returns the product of two input-integers using only addition. */ import java.util.Scanner; class MultiplicationThroughAdding { static int input (Scanner scanner) { boolean inputType = false; int input = 0; while (!inputType) { try { System.out.print("Please enter an integer: "); input = scanner.nextInt(); if (input < 0) { System.out.println("Please enter a positive integer!"); } else { inputType = true; } } catch (Exception ex) { System.out.println("Not an integer!"); scanner.next(); } } return input; } static int multiplication (int a, int b) { int result = 0; for (int i = 0; i < a; i++) { result += b; } return result; } public static void main (String[] args) { int a = 0; int b = 0; Scanner scanner = new Scanner(System.in); a = input(scanner); b = input(scanner); int result = 0; if (a < b) { result = multiplication(a, b); } else { result = multiplication(b, a); } System.out.println(a + " * " + b + " = " + result); } }
Konsolenausgabe:
Please enter an integer: sdf
Not an integer!
Please enter an integer: 56
Please enter an integer: 3
56 * 3 = 168