Java :: Aufgabe #11

8 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von 23Java (510 Punkte) - 12.11.2012 um 10:36 Uhr
Rekursive Loesung, auch wenn iterativ hier eigentlich effizienter wäre.

Quellcode ausblenden 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;
		}
	}
}
vote_ok
von Jurom (1070 Punkte) - 16.11.2012 um 09:32 Uhr
Quellcode ausblenden Java-Code
//©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
		}
}
vote_ok
von ElPapito (2690 Punkte) - 05.05.2015 um 16:00 Uhr
Quellcode ausblenden Java-Code

/**
 * @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.");
			}
		}

	}
}

vote_ok
von Nolyn (40 Punkte) - 01.09.2015 um 18:07 Uhr
Quellcode ausblenden Java-Code
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;
}
}
vote_ok
von nOrdan (1160 Punkte) - 02.06.2019 um 21:08 Uhr
Anmerkung: Ich arbeite mit dem Programm BlueJ

Quellcode ausblenden 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); 
    }
}


vote_ok
von paddlboot (3970 Punkte) - 09.07.2019 um 09:44 Uhr
Quellcode ausblenden Java-Code
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;
	}
}
vote_ok
von 0 (0 Punkte) - 22.01.2021 um 20:10 Uhr
Quellcode ausblenden Java-Code
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;
        }

    }

}
vote_ok
von TheChuggler (120 Punkte) - 29.06.2021 um 15:23 Uhr
Quellcode ausblenden Java-Code
/** 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
2108241

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.