Operatoren Multiplikation nur mit Addition, Subtraktion und Vergleich

Hallo liebe Community,

ich bin ganz neu hier und wir haben an der Fachhochschule erst mit JAVA begonnen.
Ich biefinde mich im berufsbegleitendem Studium BWL und wir müssen uns sozusagen alles selbst beibringen.
Erst kurz die Aufgabenstellung:

Imlementieren Sie in Java ein Programm, das nach Eingabe zweier Ganzzahlen deren Produkt ausgibt. Verwenden Sie als elementare Operationen nur Addition, Subtraktion und Vergleich von Ganzzahlen!
Achten Sie darauf, dass sowohl die Eingabe von Nullen als auch negativer Faktoren zu richtigen Ergebnissen führen sollen!

Ein Kumpel hat folgendes Programm aufgestellt, das auch funktioniert.
Ich finde das aber viel zu kompliziert für Anfänger und frage mich, ob man das nicht einfacher machen kann?

import java.io.*;
class multiplikation
{
public static void main (String[] args) throws IOException
{
BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));
String input;
int faktor1, faktor2, produkt, i;
System.out.println("Geben Sie zwei ganze Zahlen ein!");
input = stdin.readLine();
faktor1 = Integer.parseInt( input );
input = stdin.readLine();
faktor2 = Integer.parseInt( input );

i = 0
produkt = 0

if (faktor1 > 0);
{
if (faktor2 > 0);
{
do
{
produkt = produkt + faktor1;
i++;
}
while (i < faktor2);
}
if (Faktor 2 < 0)
{
do
{
produkt = produkt - faktor1;
i--;
}
while (i > faktor2);
}
}
//------------------------------------------------------------------------------------

if (faktor1 < 0)
{
if (faktor2 < 0)
{
do
{
produkt = produkt - faktor1;
i--;
}
while (i > faktor2);
}
if (faktor2 > 0)
{
do
{
produkt = produkt + faktor 1;
i++;
}
while (i < faktor2);
}
}
System.out.println("Produkt = " +produkt);
}
}
Ich wäre euch wirklich dankbar!
 
Zuletzt bearbeitet:
Java:
import java.io.*;
class multiplikation 
{
	public static void main (String[] args) throws IOException
	{
		BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));
		String input;
		int faktor1, faktor2, produkt, i;
		System.out.println("Geben Sie zwei ganze Zahlen ein!");
		input = stdin.readLine();
		faktor1 = Integer.parseInt( input );
		input = stdin.readLine();
		faktor2 = Integer.parseInt( input );

		i = 0
		produkt = 0

		if (faktor1 > 0);
		{ 
			if (faktor2 > 0);
			{
				do
				{
					produkt = produkt + faktor1;
					i++;
				}
				while (i < faktor2);
			}
			if (Faktor 2 < 0)
			{	
				do
				{
					produkt = produkt - faktor1;
					i--;
				}
				while (i > faktor2);
			}
		}
//------------------------------------------------------------------------------------

		if (faktor1 < 0)
		{		
			if (faktor2 < 0)
			{
				do
				{
					produkt = produkt - faktor1;
					i--;
				}
				while (i > faktor2);
			}
			if (faktor2 > 0)
			{
				do
				{
					produkt = produkt + faktor 1;
					i++;
				}
				while (i < faktor2);
			}
		}
		System.out.println("Produkt = " +produkt);
	}
}
 
Zuletzt bearbeitet:
Bitte formatiere den Code. So wie er jetzt dasteht bin ich (und wahrscheinlich einige andere User auch) einfach zu faul, ihn mir richtig zu formatieren, damit ich ihn überblicke und dir helfen kann.

Daher: Bitte formatieren, dann ist man eher bereit, dir zu helfen. 😉
 
Eclipse:
Code:
SHIFT + STRG + F

Netbeans:
Code:
SHIFT + ALT + F

Ansonsten: 😛
Code:
LEERTASTE oder TAB
 
Ist das nun so in Ordnung?

Sorry aber ich bin auf dem Gebiet noch nicht wirklich sicher.

So kann man das jetzt nicht auch einfacher schreiben?

Mit einer Zählschleife vielleicht?

So blickt doch keiner mehr durch.

Vielen Dank!
 
Ja, so ist schön :toll:

Also:
1.) Du zählst bis zu einem bestimmten Wert. Das ist fast immer ein sicheres Zeichen für eine for-Schleife (und erst recht, wenn du einen Index i hast). while nimmt man eher wenn man nicht weiß, bis wohin die Schleife geht.

2.) 1-1 = 1+(-1). Bist du sicher, dass du die Prüfungen auf >0 und <0 brauchst, und sich das nicht automatisch ergibt!? Bin gerade zu faul zum nachrechnen, aber denk nochmal drüber nach. Falls nicht: Vorzeichen vorher entsprechend anpassen anstatt ne ganze eigene Schleife dafür zu schreiben.
 
Also zum formalen

In Zeile 15+16 fehlt ein ";"
In 29 sollte es faktor2 heißen (klein ohne Abstand)
In 56 factor1

Wenn die Formel stimmen (auch zu blöd zum nachprüfen) ist die Berechnung ident egal ob factor2 positiv oder negativ ist. factor2=0 muß man dann allerdings vorher abfangen.
 
Wie gesagt, das ist ne Lösung von nem Kumpel.

Ich hatte auch einen Ansatz mit der for-Schleife, aber ich weiß nicht, wie ich das formuliere.

Er macht da irgendwie die Schleife nicht.

Das war mein Ansatz:

Java:
mport java.io.*;
class multiplikation 
{
	public static void main (String[] args) throws IOException
	{
		BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));
		String input;
		int faktor1, faktor2, produkt, i;
		System.out.println("Geben Sie zwei ganze Zahlen ein!");
		input = stdin.readLine();
		faktor1 = Integer.parseInt( input );
		input = stdin.readLine();
		faktor2 = Integer.parseInt( input );

	
		produkt = 0

		for ( int i = faktor1; faktor1 != faktor2; i++ ); // i ist Schleifenzähler 
			Produkt = produkt + faktor2
			System.out.println( produkt );
	}
}
 
Das ist fies...
Ich war/bin die volle Niete in Mathe.

Aber fangen wir mal an:
z.b. 5*3 = 5 + 5 + 5 oder 3 + 3 + 3 + 3 + 3

5 wäre z. B. faktor1 und 3 wäre Faktor2
Ich weiß nur nicht, wie man das aufschreibt, das ist ja das Problem.

Ungefähr so?

produkt = 0

for (int i = faktor1; i != faktor2; i--)
do
produkt = produkt + faktor2

Ich komm einfach nicht klar 🙁...
 
Java:
int faktor1 = 5;
int faktor2 = 3;
int ergebnis = 0;
for ( int i = 1; i <= faktor2; i++ )
    {
        ergebnis += faktor1;
    }       
System.out.println( ergebnis );

😀
 
Zuletzt bearbeitet:
Ich kann's leider grad nicht ausprobieren, weil ich auf Arbeit bin und hier keinen JEDIT habe.
Aber was bedeutet das Zeichen += ?

Ob das auch für die 0 oder negative Zahlen geht?
 
Ach so, na da kann ich's kaum erwarten, das heut Abend auszuprobieren.

Im Prinzip hatte ich das ja schon, nur dass ich i = Faktor1 immer gesetzt habe.
Hast du das schon ausprobiert ob das mit negative Zahlen und der 0 auch geht.

Ansonsten melde ich mich morgen wieder zurück ob's geklappt hat 🙂
 
Da stimme ich nvidia vollkommen zu.

Hier mit Ausnahmen (schön kommentiert):

Java:
    public static void main( String[] args )
    {
        int faktor1 = -4;
        int faktor2 = -3;
        int ergebnis = 0;
        
        //Entweder sind beide Faktoren positiv oder einer davon negativ
        //Wenn Faktor 2 positiv ist wie bisher
        if ( faktor2 >= 0 )
        {
            for ( int i = 1; i <= faktor2; i++ )
            {
                ergebnis += faktor1;
            }
        }
        else
        {
            //Faktor 2 ist negativ. Wir nehmen den Betrag und ziehen faktor2-mal faktor1 vom Ergebnis ab.
            for ( int i = Math.abs( faktor2); i >= 1; i-- )
            {
                ergebnis -= faktor1;
            }
        }

        System.out.println( ergebnis );
    }
 
Zuletzt bearbeitet:
Ähm Zeile 9 und 10 bringen so gar nichts. Abgesehen davon glaube ich nicht dass die Math Klasse verwendet werden darf. Aber das müsste Totalanfängerin bestätigen...
 
Huch stimmt ... da war ich wohl zu schnell. Schon verbessert! 😀

Naja, falls das auch nicht erlaubt ist, dann eben so:

Java:
    //Faktor 2 ist negativ. Wir nehmen den Betrag und ziehen faktor2-mal faktor1 vom Ergebnis ab.
    for ( int i = -faktor2; i >= 1; i-- )
    {
       ergebnis -= faktor1;
    }
 
Zuletzt bearbeitet:
Ich hab keine Ahnung was Math Klasse bedeutet.
Da wir das nicht kennen, denke ich nicht, dass wir das anwenden dürfen.

Wäre noch jemand so lieb und würde mir das komplette Programm auch für negative Zahlen und auch der 0 hier posten?

Ich hab halt nur Erfahrung und wir müssen uns das alles im Selbststudium beibringen.

Das wäre wirklich nett!

Danke euch!
 
[...]
Ich hab halt nur Erfahrung und wir müssen uns das alles im Selbststudium beibringen.[...]

Vll. solltest du dir auch gängige Einsteigerliteratur zum Thema Java organisieren und systematisch
durcharbeiten. Auch wenn das langweilig erscheint ist das immer noch die nützlichste Art sich eine
Programmiersprache zu Gemüte zu führen.

Und hier etwas für dich zum Studieren.

Java:
public class MultiplikationMitAdditionBeispiel {
	public static void main(String[] args) {
		System.out.println(produktMitAddition(3, 4));
	}

	/**
	 * Berechnet das Produkt der Argumente mithilfe von Addition.
	 */
	public static int produktMitAddition(final int a, final int b){
		int summe = 0;
		boolean negiere;
		for(int i = (negiere = a < 0) ? -a: a; --i >= 0; ){
			summe += b;
		}
		return negiere ? -summe : summe;
	}
}
 
Zuletzt bearbeitet:
Vielen Dank, ich werde heute Abend mal versuchen, die zwei Posts zusammenzufügen 😉

Wir haben Literatur bekommen, aber wenn man so null Ahnung hat und einem das keiner erklärt, kommt man da nicht wirklich zurecht.
Ich zumindest nicht....

Da wir das auch nur 2 Semester haben, denke ich, wäre es zu übertrieben, sich das perfekt anzueignen...

Jedenfalls danke für die Hilfe.

Wir haben noch vier Übungen die wir bis Ende Februar bearbeitet haben müssen..
Ich denke da werde ich noch öfter eure Hilfe benötigen.

Vielen Dank!
 
Wir haben Literatur bekommen, aber wenn man so null Ahnung hat und einem das keiner erklärt, kommt man da nicht wirklich zurecht.
Ich zumindest nicht....

Da wir das auch nur 2 Semester haben, denke ich, wäre es zu übertrieben, sich das perfekt anzueignen...
[...]

Naja, 2 Semester sind lang. Hört man danach nie wieder etwas von Java, dann klappt es sicher auch
mit Foren und Google um seine Aufgaben zu lösen. Das ist aber eine Frage des eigenen Anspruchs.

Zieht man es vor etwas strukturierter in die Materie einzutauchen und möchte etwas lernen so sind
die durchschnittlichen Anfängerbücher recht schnell durchgegangen. Zumindest die relevanten
Informationen welche als Grundlage für die meisten Übungen dienen hat man schnell gelernt. Das
Ganze dauert ganz sicher weniger als ein Semester. Für die Variante des erhöhten eigenen
Anspruchs, gäbe es z.B. folgende Literatur (eins von den dreien sollte genügen)

Java als erste Programmiersprache: Vom Einsteiger zum Profi, das ist an Trockenheit kaum zu
überbieten behandelt aber so ziemlich jegliches Thema das man für Übungen benötigen würde.

Grundkurs Programmieren in Java, scheint vernünftig zu sein, behandelt die wichtigsten Themen
strukturiert, ein gutes Mittelding zwischen dem Ersten und dem Letzten.

Java von Kopf bis Fuß, das ist zwar schon etwas älter und greift nur auf Java 5 Funktionalität hat
aber einen recht eigenen Stil der versucht Java sehr anschaulich und "humorvoll" zu vermitteln, die
Menge an vermittelten Informationen ist auch recht überschaubar.
 
Zuletzt bearbeitet:
Wir haben folgende Bücher von der Uni gestellt bekommen:

RRZN / Leibnitz Universität Hannover Programmierung (8. Aufl.) 2011
RRZN / Leibnitz Universität Hannover Informationstechnologie (4. Aufl.) 2012

Finde ich total unübersichtlich und ich komme damit nicht wirklich zurecht.....
 

Neue Themen


Zurück
Oben