PDA

View Full Version : Problem bei "Primfakt.java"


Javanack
13-05-2002, 00:17
Habe in der 3. Runde das Beispiel bekommen, wo man eine Zahl zwischen 1 und 100 in seine Primfaktoren zerlegen muß. Folgenden Code habe ich verfaßt, bin aber ratlos warums nicht funktioniert. Es wird einfach nichts ausgegeben. Da ich ein Programmieranfänger bin, wäre ich für jede Hilfe dankbar.


import eprog.*;

public class Primfakt extends EprogIO {

public static void main (String []args) throws EprogException
{

short[]primzahlen = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61 ,67,71,73,79,83,89,97};
int eingabe = 0;
String ausgabe = new String();
boolean falscheEingabe = false;
int i = 0;

try {
eingabe = readInt();
if (eingabe < 0 || eingabe > 100)
ausgabe = "FALSCHE EINGABE";
eingabe = -1;
}

catch (EprogException e)
{
ausgabe = "?";
eingabe = -1;
}

if (eingabe == 0)
{
ausgabe = "0";
eingabe = -1;
}
if (eingabe == 1)
{
ausgabe = "1";
eingabe = -1;
}

while (eingabe > 1 && i < 25) {
if (eingabe % primzahlen[i] == 0)
{
ausgabe = ausgabe + primzahlen[i];
eingabe = eingabe/primzahlen[i];
if (eingabe != 1)
ausgabe = ausgabe + " ";

}
i++;
}
println (ausgabe);
}
}

girl
13-05-2002, 02:09
da :
if (eingabe < 0 || eingabe > 100)
ausgabe = "FALSCHE EINGABE";
eingabe = -1;
}
gehört bevor ausgabe ein{und nach-1;ein}

Javanack
13-05-2002, 10:50
danke jetzt gehts, aber auch noch nicht richtig. Bei der eingabe 32 gibt er nur 2 aus (statt 2 2 2 2). Also immer wenn eine Zahl öfters in der Ausgabe vorkommt, gibt er diese nur einmal aus. Wieso blos?

girl
13-05-2002, 14:10
ich schaus mir nochmal an wenn ich daheim bin und kompelieren kann....

DoomedOne
13-05-2002, 16:06
wie oft kommt dieses Bsp denn noch :D

also ich glaub der fehler ist da

while (eingabe > 1 && i < 25)
{
if (eingabe % primzahlen[i] == 0)
{
ausgabe = ausgabe + primzahlen[i];
eingabe = eingabe/primzahlen[i];
if (eingabe != 1)
ausgabe = ausgabe + " ";
}
else //Fix
i++;
}

Javanack
13-05-2002, 18:31
Jetzt funktionierts einwandfrei. Danke allen Beteiligten für die Mithilfe - ihr habt mich gerettet!