Schleife im Primzahlrechner Java

InEvil ich merke du hast spaß.

Ok hier meine antwort:
"InEvil du hast recht ich bin ein looser der keine Ahnung hat und du bis ein Programmiergott, ich fühle mich geehrt das du göttliches Wesen mit mir geschrieben hast und mir meine grenzen gezeigt hast. Ich hoffe eines Tages auch mal so zu sein wie du. Ich korrigiere, annähernd so wie du weil genauso geht ja nicht. (Weil es nur einen Programmiergott gibt)"

Bist du jetzt zufrieden? xD

P.s: Ich hab nie gesagt das ich pro bin.
 
xD naja du sprichst als wärst du der pro...
hier gehts nicht um looser oder gott oder sonst irgendwas...
nur du lernst nichts beim copy-paste coden ...

such einfach bei google oder frag deinen chef er solls dir erklären... da haste ca. 100x soviel als hier copy-paste zu benutzen...
 
Ich hab heute nicht alles Copy-Paste gemacht.
Ich hab nur die Rechnung kopiert und dann die Methoden die ich gestern erstellt habe selber eingefügt und so angepasst das sie richtig funktionieren.

Mir fehlte dann nur noch das mit dem Fehler wenn die zweite Zahl kleiner als die erste ist.
Da wurde mir geholfen.

Ich sitze nicht da und freu mich wenn was klappt. Ich lese mir die ganze Zeit sachen durch und das "Java ist auch eine Insel" auch.

Ausserdem, was du nicht verstanden hast, ist das ein Praktikum wo ich einen Crashkurs in programmieren hatte um zu sehen ob es mir liegt. Nur darum geht es hier und nicht um gleich alles zu verstehen. Du hättest das in deinen anfängen nach 2 Tagen ohne Hilfe auch nicht hinbekommen.

Ich bin jedenfalls fertig und hab jetzt alles. Vielleicht sieht man sich ja wieder im Forum xD
 
mhh weis nimma wie des bei mir war xD
als ich angefangen hab war ich ahhm 12/13 xD
is schon ne zeit lang her

naja das programm schaut aber eig mehr prof aus als für nen noobie ...
mir jetzt auch egal ...:evillol:

hast eig nen lösungsansatz für meinen string xD?

mich siehste sicher nochmal xD
ob ich dich mal schaun
 
gilt das mit dem programm noch?^^;)
meine lösung ist zwar umständlicher als deine, sollte es aber auch tun:
Code:
boolean zahl = false;
int c = 0;
for(int i = 0; i < string.length; i++) {
 if((int)string.charAt(i) >= 48 && (int)string.charAt(i) <= 57) {
  if(zahl) {
   array[c] = string.charAt(i);
   c++;
   zahl = false;
  }
  else
   zahl = true;
 }
}
 
Zuletzt bearbeitet:
InEv1L schrieb:
@FunnyName
schleife für die länge des strings
substring um jedes einzelne zeichen zu erkennen
(weis grad ned ob man in java auf die chars wie auf ein array zugreifen kann - wenns so is dann eben mit element nummer auf die einzelnen elemente prüfen)
die einzelnen zeichen mit regex [0-9] prüfen
...
so sollte des sogar ein blutiger anfänger hinbekommen ;P

statt einer einfachen Methode von Integer aufzurufen, braucht man also eine zusätzliche Schleife und muss wissen wie man auf einen String als Char-Array zugreift und einen Char auf numerisch prüft und sich dann nebenbei mit Regex beschäftigen, was definitiv kein Thema für einen blutigen Anfänger ist (nur weil du anscheinend recht viel mit Regex arbeitest und das aus dem Ärmel schüttelst). Zumal die Lösung dann auch deutlich unflexibler wäre als Integer.parseInt() zu benutzen und sich mit Exceptionhandling zu beschäftigen sicher sehr sinnvoll ist.

btw. deine Aufgabe ist nicht eindeutig lösbar, da einzelne Ziffern genauso Zahlen darstellen wie mehrere Ziffern. Normalerweise sollte eine RegExp aber immer den kleinsten Match anstreben was deine nicht tut, wenn ich sie richtig lese.

@F.b Character.isDigit() wäre einfacher gewesen :)
 
Zuletzt bearbeitet:
ah ok, ich wusste nicht ob es eine eigene Funktion dafür gibt, danke :)
 
So langsam komm ich mir dumm vor, das ist zuviel Information in so kurzer Zeit.
Ich brauch wieder hilfe -.-

Es klappt alles ganz gut aber jetzt wollen sie mir zeigen was JUnit macht und ich soll eine Methode erstellen die nur Prüft ob es eine Primzahl ist ein einer Schleife. Ich versteh gar nichts mehr.

Mir wurde schon der Satz:
boolean istPrim=istPrimzahl(testZahl);

Rein geschrieben und ich weiss nur das ich jetzt ganz unten damit eine Methode erstellen soll. die Methode soll nichts ausgeben sondern nur prüfen. Ich hab echt den überblick verloren.

So siehts aus:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PrimzahlMitBereich {

private static Object testZahl;

public static void main(String[] args) {

int untereGrenze = PrüfZahl1();
int obereGrenze = PrüfZahl2(untereGrenze);
System.out.print("Die Primzahlen im eingegeben Bereich lauten: ");

if (untereGrenze <= 1) {
untereGrenze = 2;
}
if (untereGrenze == 2) {
untereGrenze++;
}
int testZahl = untereGrenze;
if ((testZahl % 2) == 0) {
testZahl++;
}


for (; testZahl <= obereGrenze; testZahl = testZahl + 2) {
int divisor = 3;
int rest = 1;

boolean istPrim=istPrimzahl(testZahl);

if(istPrim) {
System.out.print(testZahl + " ");
}

while ((rest != 0) && (divisor < testZahl / 2)) {

rest = testZahl % divisor;
divisor = divisor + 2;
}
if (rest != 0) {
System.out.print(testZahl + " ");
}
}
}







static int PrüfZahl1() {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
boolean zahlgueltig = false;
int zahl = 0;
do {
System.out.print("Bitte geben Sie die erste Zahl ein:");
try {
zahl = Integer.parseInt(in.readLine());
if (zahl > 0) {
zahlgueltig = true;
} else {
System.out.println("Fehler: Sie müssen eine positive Zahl eingeben.");
}
} catch (NumberFormatException e) {
System.out.println("Fehler: Sie haben keine Zahl eingegeben.");
} catch (IOException e) {
System.out.println("Ein IO Fehler ist aufgetreten");
}
} while (!zahlgueltig);

return zahl;
}

static int PrüfZahl2(int untereGrenze) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
boolean zahlgueltig = false;
int zahl = 0;
do {
System.out.print("Bitte geben Sie die zweite Zahl ein:");
try {
zahl = Integer.parseInt(in.readLine());
if (zahl > 0 && zahl > untereGrenze) {
zahlgueltig = true;
} else {
System.out.println("Fehler: Sie müssen eine positive Zahl eingeben, die größer ist als die erste.");
}
} catch (NumberFormatException e) {
System.out.println("Fehler: Sie haben keine Zahl eingegeben.");
} catch (IOException e) {
System.out.println("Ein IO Fehler ist aufgetreten");
}
} while (!zahlgueltig);

return zahl;
}
}

Hilfe und eine Erklärung wären echt nett :)
Achso und diese neue Schleife soll natürlich die gleiche Berechnung nutzen die ja oben schon steht.
 
kannst du den code evtl in
Code:
 blöcken posten, dann ist es einfacher zu lesen...

die methode hat folgende signatur: public static boolean istPrimzahl(int n)
ich schätze mal sie sollte überprüfen, ob die zahl eine primzahl ist und dann entweder true oder false zurückgeben.
 
Zuletzt bearbeitet:
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PrimzahlMitBereich {

	private static Object testZahl;

	public static void main(String[] args) {

		int untereGrenze = PrüfZahl1();
		int obereGrenze = PrüfZahl2(untereGrenze);
		System.out.print("Die Primzahlen im eingegeben Bereich lauten: ");

		if (untereGrenze <= 1) {
			untereGrenze = 2;
		}
		if (untereGrenze == 2) {
			untereGrenze++;
		}
		int testZahl = untereGrenze;
		if ((testZahl % 2) == 0) {
			testZahl++;
		}
		
		
		for (; testZahl <= obereGrenze; testZahl = testZahl + 2) {
			int divisor = 3;
			int rest = 1;
			
			boolean istPrim=istPrimzahl(testZahl);
			
			if(istPrim) {
				System.out.print(testZahl + " ");
			}
			
			while ((rest != 0) && (divisor < testZahl / 2)) {

				rest = testZahl % divisor;
				divisor = divisor + 2;
			}
			if (rest != 0) {
				System.out.print(testZahl + " ");
			}
		}
	}

	static int PrüfZahl1() {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		boolean zahlgueltig = false;
		int zahl = 0;
		do {
			System.out.print("Bitte geben Sie die erste Zahl ein:");
			try {
				zahl = Integer.parseInt(in.readLine());
				if (zahl > 0) {
					zahlgueltig = true;
				} else {
					System.out.println("Fehler: Sie müssen eine positive Zahl eingeben.");
				}
			} catch (NumberFormatException e) {
				System.out.println("Fehler: Sie haben keine Zahl eingegeben.");
			} catch (IOException e) {
				System.out.println("Ein IO Fehler ist aufgetreten");
			}
		} while (!zahlgueltig);

		return zahl;
	}

	static int PrüfZahl2(int untereGrenze) {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		boolean zahlgueltig = false;
		int zahl = 0;
		do {
			System.out.print("Bitte geben Sie die zweite Zahl ein:");
			try {
				zahl = Integer.parseInt(in.readLine());
				if (zahl > 0 && zahl > untereGrenze) {
					zahlgueltig = true;
				} else {
					System.out.println("Fehler: Sie müssen eine positive Zahl eingeben, die größer ist als die erste.");
				}
			} catch (NumberFormatException e) {
				System.out.println("Fehler: Sie haben keine Zahl eingegeben.");
			} catch (IOException e) {
				System.out.println("Ein IO Fehler ist aufgetreten");
			}
		} while (!zahlgueltig);

		return zahl;
	}
 
sehe ich das richtig, dass das programm alle primzahlen zwischen zwei grenzen auflisten soll?
dann gibt es nämlich eine implementierung, die mMn sinnvoller ist, Stichwort boolean array...
 
Du ich hab keine Ahnung mehr.
Ich weiss nur das in der Main eine Berechnungsformel ist und das ich unten zwei Methoden habe die die Prüfzahlen ausspucken.
In den Methoden sind Schleifen falls man was falsches angibt.

Jetzt soll ich eine Methode erstellen wo nur die Rechnung überprüft wird aber ich verstehs nicht weil ich anfänger bin.
 
okay also lassen wir das mit dem array. du brauchst also einen algorithmus, der prüft, ob es sich bei der angegebenen zahl um eine primzahl handelt. gehst du nach einem tutorial vor, oder schreibst du das selbst?
 
Ich hab das meiste kopiert und versuch soviel zu verstehen wie ich kann aber ich hab den überblick verloren. Ich werde einfach fragen weil ichs nicht verstehe.
 
ich glaube an dieser stelle solltest du deine eigene situation einmal von oben betrachtet reflektieren. (reflection in action) ;)

was ist das für ein praktikum bei der firma? wozu brauchst du das programmieren dort?
soll programmieren deine spätere berufsaufgabe werden?
hast du eine dementsprechende ausbildung gemacht?
bzw. hast du vor, so eine ausbildung zu erfahren?

die basics vom objektorientierten programmieren ist nicht in ein paar tagen gelernt.
und erst recht nicht, wenn du in einem forum nach lösungen fragst.
da wirst du nur 10fach-optimierte algorithmen zugeschoben bekommen, die sich negativ auf deine eigene lernkurve auswirken. so wirst du nie lernen, algorithmen selber entwickeln zu können, bzw. dir selbst die informationen effizient zusammensuchen zu können.
vergleichbar mit den leuten, die zwar informatik studieren, aber die programmieraufgaben immer vom rest des teams erledigen lassen. die können nach dem studium einfach nicht programmieren... und werden architekt oder it-berater ;)
 
Die Fragen den du dir zu dem Aufgabe mal stellen solltest.
Was ist eine Primzahl?
Wie weise ich nach das etwas eine Prinzahl ist?
Wie übergebe gebe ich mit einer methode einen rückgabewert aus?
Oder Konkreter: Was ist eine Methode/Funktion?

Alle Sachen sollten mit googlen, der Java Hilfe, Schulwissen und Nachdenken in höchstens 60 Minuten zu lösen sein.
Danach kannste wirklich einfach den Code hinschreiben
 
Zurück
Oben