Stringvergleich mit CharAt

Status
Nicht offen für weitere Antworten.

Fantajim

Mitglied
Hallo zusammen hab ein neues Problem

Grundidee des Programm ist es Buchstaben im ersten String mit dem 2ten abzugleichen und an welcher Stelle eine Überinstimmung erfolgt. Ich happere aber doch jetzt schon und hab den ersten Zähler noch nicht eingebaut..

Kann mir bitte wer sagen ich das else if formulieren muss, das wenn keine Übereinstimmung vorliegt das -1 angesteuert wird?

[Java]
public class AufgabeBtest {
public static void main(String[] args) {
String a = args[0];
String b = args[1];
int d = 0;
for(int c = 0; c < b.length(); c++){
d = c;
char last = b.charAt(d);
char first = a.charAt(0);
if (first==last){
System.out.println(d);
}
else if (hier fehlt Code hab schon viel probiert...){
continue;
}
else {

System.out.println("-1");

}
}
}
}
[/code]
 
Zuletzt bearbeitet:
S

SlaterB

Gast
wozu ist d, wenn es immer gleich c ist?
soll nur mit dem ersten Zeichen von a verglichen werden oder mit allen?
falls mit allen: String.contains() oder eine zweite innere Schleife, die alle Zeichen von a durchläuft

---

was soll denn bei 13 passieren?
wieso nicht einfach 13-15 weglassen, also

if (first==last){
System.out.println(d);
}
else {
System.out.println("-1");
}

dann wird doch 'wenn keine Übereinstimmung vorliegt das -1 angesteuert wird'


falls du natürlich noch die innere Schleife einbaust muss das etwa so aussehen:

boolean found = false;
for Schleife ..
// am Ende found true oder false
if: gefunden
else: -1
 

Fantajim

Mitglied
Hallo und danke für die schnelle Antwort.

hab erst eben angefangen und vorher noch nie programmiert, hab noch arge Logikfehler.. das mit dem d=c kann ich mir sparen das war mir nicht aufgefallen.

das mit der 2ten Schlaufe mache ich sobald ich das mit der ersten hinbekommen habe.

ich möchte nicht das mir die Konsole nicht 8x -1 ausgibt sondern nur 1x mal.
hab da an etwas wie else if(....) {
continue;
}
gedacht...

Greetz
Fantajim
 
Zuletzt bearbeitet:
S

SlaterB

Gast
na dann ist das so ähnlich, dann muss das found vor die erste Schleife bzw. die Variable muss wohl eher
anyCharNotFound
heißen,
im else-Fall setzt du diese Variable auf true, das kann ruhig mehrfach passieren,
am Ende prüfst du ob sie true ist und gibst dann EINMAL -1 aus
 

Fantajim

Mitglied
So ich hab wirklich viel versucht aber leider krieg ich es nicht hin die beiden Zähler aufeinander abzustimmen... das mit dem Boolean für treu war ne super idee und hat mir wirklich sehr viel gebracht ist jetzt im Code noch nicht eingebaut aber ist kein Problem mehr.

Kann mir jemand nen Tipp geben was der nächste Schritt wäre bitte?

ich versuch den ersten Zähler laufen zu lassen bis er was findet, wenn er nichts findet soll der zweite Zähler eins raufgehen und der erste wieder durchrasseln lassen. Wenn es eine Übereinstimmung gibt soll bei beiden Strings immer +1 addiert werden bis es nicht mehr übereinstimmt und die Position des ersten Übereinstimmens sowie ein TRUE abgeben. Hat wer ne Idee wie man das machen könnte?

Greetz
Fantajim

Java:
public class test {
	public static void main(String[] args) {
String a = args[0];
String b = args[1];
int c = 0;
boolean any = false;

for(int d = 0; d < a.length(); d++){
		char last = b.charAt(c);
		char first = a.charAt(d);
			if (first==last){
				System.out.println(c);
abc2:				for(int e; d < a.length(); d++){
					for(int f; c < b.length(); c++){
					char last2 = b.charAt(f);
					char first2 = a.charAt(e);
						if (first==last) {
						continue abc2;
						}
						else {
						break abc2;
						}
						}
						}
						}
			else {
		}
		}
	for(c = 0; c < b.length(); c++){
		break;	}
			
}
if(!any) {
System.out.println("-1");
}
else{
System.out.println("ok");
}
}
}
 
S

SlaterB

Gast
was ist nochmal überhaupt das Endziel, was soll der Code genau tun, gib mal Beispiele, also a, b und gewünschtes Ergebnis

'erster Zähler', 'zweiter Zähler' ist nur schwer bis gar nicht im Code zu finden, worum gehts?
'bei beiden Strings immer +1 addiert werden' kann ich auch nirgends erkennen, vom Sinn ganz zu schweigen


> for(int d = 0; d < a.length(); d++){
[..]
> abc2: for(int e; d < a.length(); d++){

niemals die Schleifenvariablen wie d woanders verändern lassen, schon gar nicht in einer zweiten Schleife,
die Variable e hat auch wenig Bedeutung

> for(int f; c < b.length(); c++){

int f genauso fraglich wie e
 
Zuletzt bearbeitet von einem Moderator:

Fantajim

Mitglied
Sorry für Doppelpost..

argh war nicht angemeldet...

hier nochmal richtig:

Ok
Beispiel 1:
Startparameter: hallo ihhallo
Ausgabe: 2
ok
Beispiel 2:
param: hallo ihhallu
Ausgabe: -1

Ich werde nochmals dran arbeiten und mir deine Hinweise nochmals anschauen. Vieles das ich mache macht noch keinen Sinn da ich ausprobieren möchte was geht und was nicht.

Ich poste Morgen eine anständigeren Ansatz, bitte mach dir keine Mühe.

Greetz
Fantajim
 

Fantajim

Mitglied
Ok hab was neues der Code funktioniert, jedoch nur wenn die Übereinstimmung bei 0 oder 1 auftritt im 2ten String, aber warum nicht bei der 3 oder 7ten Stelle?
also:
Bsp das funktioniert:
hi ihi
Bsp das happert:
hi iiiiiiiiiiiiihi

Edit: ich habs... hab bei der for Schlaufe a.length anstatt b.length... Danke vielmals für deine Hilfe Slater!!

Java:
public class test {
	public static void main(String[] args) {
String a = args[0];
String b = args[1];
boolean any = false;
Schleife:for(int c = 0; c < b.length(); c++){
		char last = b.charAt(c);
		char first = a.charAt(0);
			if (first==last){
				 System.out.println(c);
				 	if(b.contains(a)){
				 	any = true;
				 	break Schleife;
									}
									else {
										any = false;
										}
							}
											}
			


if(!any) {
System.out.println("-1");
}
else{
System.out.println("ok");
}
}
}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
im geposteten Code ist noch ne Menge falsch,

wieso wird das contains nur in einem if-Fall aufgerufen?

any = false; und any = true; dürfen nicht beide auftauchen,
was dein Programm eigentlich machen soll, habe ich immer noch nicht verstanden, die Beispiele geben es ohne Erklärung kaum wieder,
aber wenn man den normalen Fall betrachten 'alle Buchstaben von a auch in b drin',
dann wäre es folgendes schlecht:
a: xyz b: xz

x gefunden, -> true
y nicht gefunden -> false
z gefunden -> true

am Ende ist any true obwohl ein Zeichen fehlt,
daher: any am Anfang vor der Schleife auf true setzen und in der Schleife höchstens auf false, nie auf true

falls das die Intention war, bei anderem Programmsinn natürlich anpassen
 

Fantajim

Mitglied
Intention des Codes war es eine erste Übereinstimmung zu suchen, dann schauen ob der erste String komplett vorkommt an dieser Stelle, falls nicht weiterzusuchen.

habs mit ein paar Beispielen versucht und momentan einen anderen Code gemacht der vollends auf contain verzichtet.

Java:
package aufgabenblatt2;

public class AufgabeB {
	public static void main(String[] args) {
String a = "hallo";
String b = "hllhallo";
boolean any = false;
boolean any2 = false;
int e = 0;
Schleife:for(int c = 0; c < b.length(); c++)											{
		if(any2){
			if(c>(a.length()-e)){
				break;
			}
			e = c;
		}
		int d = 0;
		char last = b.charAt(c);
		char first = a.charAt(d);
			if (first==last)												  {
				for(d = 0; d < a.length(); d++)			   {
					char first2 = a.charAt(d);
					char last2 = b.charAt(c);
				 			if(first2==last2)      {
				 				if(b.length()<(e+a.length())){
				 					any = false;
				 					break Schleife;
				 				}
				 			c++;
				 			any = true;
				 			any2 = true;
				 			}
				 			else {
				 			d--;
				 			c--;
				 			any = false;
				 			break;
				 			}
				 			
				 			
				 			}
			}
				 			
else {
	continue;
}
				 				
}			 				
				 																				 																				 																														 																												
if(!any) {
System.out.println("-1");
}
else{
System.out.println("ok");
System.out.println("Position " +e);
}
}
}

Greetz
Fantajim
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 8
W Stringvergleich Java Basics - Anfänger-Themen 7
D Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 7
C Probleme bei einem Stringvergleich - Attribut "value" unterscheidet sich Java Basics - Anfänger-Themen 9
W Stringvergleich mit equals Java Basics - Anfänger-Themen 13
D Probleme mit Stringvergleich Java Basics - Anfänger-Themen 7
D Stringvergleich Java Basics - Anfänger-Themen 7
B Datentypen Stringvergleich mit == Java Basics - Anfänger-Themen 18
J Stringvergleich Java Basics - Anfänger-Themen 4
E Probleme bei Stringvergleich, leer String = gefülltem String Java Basics - Anfänger-Themen 2
N Stringvergleich Java Basics - Anfänger-Themen 7
S Stringvergleich funktioniert nicht ? Java Basics - Anfänger-Themen 12
G Stringvergleich Java Basics - Anfänger-Themen 2
G Problem mit .substring() und Stringvergleich Java Basics - Anfänger-Themen 3
G Was is falsch mit meinem program? (stringvergleich-problem) Java Basics - Anfänger-Themen 8
P String zu int konvertieren nur mit charAt Java Basics - Anfänger-Themen 8
G Java charAt Methode Java Basics - Anfänger-Themen 10
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
O Erste Schritte Eigene charAt(i) Methode schreiben Java Basics - Anfänger-Themen 10
R Datentypen Datentyp String lenght & charAT Java Basics - Anfänger-Themen 4
A Wieso charAt(0) + charAt(3) = INT-Wert? Java Basics - Anfänger-Themen 5
S Methoden CharAt Java Basics - Anfänger-Themen 10
J Methode ".charAt()" einer "int" variable zuschreiben Java Basics - Anfänger-Themen 3
A charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern? Java Basics - Anfänger-Themen 4
T Compiler-Fehler String auswerten mit CharAt Java Basics - Anfänger-Themen 2
F charAt-Methode liefert falsche Unicode-Werte Java Basics - Anfänger-Themen 8
G Umkehrung von String.charAt(x) Java Basics - Anfänger-Themen 5
B Frage zur methode CharAt Java Basics - Anfänger-Themen 11
D charAt(i) verständnisproblem Java Basics - Anfänger-Themen 4
J Fragen zu System.out.print und charAt Java Basics - Anfänger-Themen 3
C Api Methode charAt Java Basics - Anfänger-Themen 6
F Stringinhalte mit CharAt vergleichen Java Basics - Anfänger-Themen 8
M charAt(x) exists? Java Basics - Anfänger-Themen 3
D String#equals + String#charAt Java Basics - Anfänger-Themen 5
G charAT(i) eine Ziffer ? Java Basics - Anfänger-Themen 2
G Was bedeutet charAt()? Java Basics - Anfänger-Themen 5
S length und charAt Java Basics - Anfänger-Themen 8
G charAt Java Basics - Anfänger-Themen 4
S charAt() Java Basics - Anfänger-Themen 5
T charAt funktion mit einer string zeichenkette nutzen. WIE? Java Basics - Anfänger-Themen 13
B charAt() Problem Java Basics - Anfänger-Themen 6
S String / charAt + Fehlermeldung: char cannot be dereferenced Java Basics - Anfänger-Themen 16
D charAt-Problem Java Basics - Anfänger-Themen 5
D Probleme mit charAt Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben