Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Input/OutputPrimzahlenzerlegung -> könnte man Zahlen auch einlesen?
ich habe hier als Übung folgenden Code verstanden:
Java:
public static void main(String[] args) {
Out.print("Geben Sie eine positive ganze Zahl ein (Ende = Strg-C): ");
int x = In.readInt();
while (In.done()) {
Out.print("Primfaktoren von " + x + ": ");
// try 2 and all odd numbers for prime factors
int i = 2;
while (x > 1) {
while (x % i == 0) {
Out.print(i + " ");
x = x / i;
}
if (i == 2)
i++;
else
i = i + 2;
}
Out.println();
Out.println();
Out.print("Geben Sie eine positive ganze Zahl ein (Ende = Strg-C): ");
x = In.readInt();
}
}
Ich rätsle aber wie müsste ich den Code umschreiben wenn ich z.B. die Primzahlen von 1-1000.000 via TXT Datei füttern würde. (Verständnis halber interessiert mich das sehr...)
Habe schon versucht
Java:
In.open("primzahlen.txt"); int primzahlen = In.readInt();
einzufügen und funktioniert auch mit dem Ersten Faktor 2 doch dann geht's nicht weiter ...
z.B. wenn ich die Zahl 22 zerlege schafft das Programm noch 2 und hängt dann bei 11 obwohl 11 auch im Dokument ist.
die Klassen In und Out kennt niemand,
der neue Code mit Variable primzahlen passt nicht zum vorherigen,
poste einen vollständigen Code
wo dein Programm hängt kannst du mit Ausgaben testen, eher doch vor der nächsten Eingabe,
oder vermutest du wirklich in der Zerlegung? du könntest dort in die Schleifen auch mehr Ausgaben einsetzen
Die klassen In & Out sind korrekt machen nix anderes alles entweder Über Eingabe oder über Textdatei zu lesen. (z.B. innerhalb der Textdatei die Wert 2 3 5 7 11 usw.)
Die Klasse Out wiedergibt mir nur das Ergebnis der Berechnung im Eclipse.
Ich habe versucht den Code so anzupassen:
Java:
public class K4Test8InputChris {
public static void main(String[] args) {
Out.print("Geben Sie eine positive ganze Zahl ein (Ende = Strg-C): ");
int x = In.readInt();
while (In.done()) {
Out.print("Primfaktoren von " + x + ": ");
// try 2 and all odd numbers for prime factors
In.open("primzahlen.txt");
int i = In.readInt();
while (x > 1) {
while (x % i == 0) {
Out.print(i + " ");
x = x / i;
}
}
In.close();
Out.println();
Out.println();
Out.print("Geben Sie eine positive ganze Zahl ein (Ende = Strg-C): ");
x = In.readInt();
}
}
}
und wo genau hört es nun wie auf?
wenn das Programm gleich zu Ende geht, wäre das kein Wunder,
wenn du In.close(); aufrufst wird doch wohl In.done() ein Ende anzeigen,
in der Schleife jedes Mal die Datei mit open zu öffnen könnte auch immer wieder an den Anfang springen
ach so, für die Primzahlen ist das,
überhaupt komisch wie du in dieser einen Datei die Konsoleneingabe + Datei mischen kannst,
wäre es denkbar für dich, die Primzahlen vorher alle in eine Liste/ ein Array einzulesen und danach erst das Programm
mit der Eingabe zu beginnen?
dann wäre vielleicht deutlicher, was wo genau scheitert
Bei einem vorhergehenden Übungsprogramm hatte ich das schon mal dass ich für die Variable x die Eingabewerte aus einer Textdatei hole dort funktionierte das auch problemlos.
Nur als Beispiel wo es bereits geklappt hat:
Java:
public class K4_Test6 {
public static void main(String[] args) {
int zahlmax = -2147483648;
int zahlmin = 2147483647;
int sum = 0;
int n = 0;
In.open("input.txt");
int x = In.readInt();
while (In.done()){
Out.print(x + " ");
if (x>zahlmax) zahlmax = x;
if (x<zahlmin) zahlmin = x;
sum = sum + x;
n++;
x = In.readInt();
}
In.close();
Out.println();
if (n>0) {
Out.println("größte Zahl "+ zahlmax);
Out.println("kleinste Zahl "+ zahlmin);
Out.println("der Mittelwert "+ (sum/n));
}
else Out.println("keine Eingabe!");
}
}
Ich denke ich übersehe hier nur eine Kleinigkeit im Code...