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.
Erste Schrittezwei Buchstaben die im String enthalten sind ausgeben
undzwar muss ich zwei strings erstellen undzwar String s und String p.
String s soll ein wort enthalten z.b. HALLO,
String p 2 Buchstaben z.b. LL.
nun muss ich zwei schleifen bilden und dann ausgeben ob im wort "HALLO" die zwei LL vorkommen (System.out.print("die buchstaben kommen im wort vor)
oder (System.out.print("die buchstaben kommen nicht vor")
nicht entahlten sind.
nicht mehr und nicht weniger.
ich bin auf diesem gebiet leider blutiger anfänger und hoffe auf eure hilfe.
Eine Frage hätte ich da noch:
- Wie genau müssen denn die Buchstaben vorhanden sein?
Muss "LL" dann direkt in dieser Reihenfolge vorhanden sein? Oder müssen in dem Wort nur 2 "L"s sein?
Also ich nehme mal an, dass ist sowas wie ne Schulaufgabe (o.ä.). Daher sollte man vorher klar stellen, was man denn da benutzen darf. Soll es explizit mit Schleifen realisiert werden oder darf man da auch übliche Methoden verwenden, die String anbietet?
Ansonsten schreibe einfach mal ein bisschen Code, der deiner Meinung nach das Problem lösen können soll
also habe mal bisschen was zusammengeschrieben was ich verwenden darf:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class JavaApplication1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader( System.in ) );
System.out.println("Geben Sie ein Wort ein!");
String wort = in.readLine();
System.out.println("Geben Sie zwei Buchstaben ein");
String buchstaben = in.readLine();
for (int
for (int
if ()
{
System.out.println("Die Buchstaben sind im Wort enthalten");
}
else
{
System.out.println("Die Buchstaben sind im Wort nicht enthalten");
}
}catch (Exception ex){
}
}
}
//Auslesen mit BufferedReader
....
Pseudocode:
Falls(wort contains Buchstaben) //am besten noch die Methode to UpperCase hier benutzen damit auch LL und nicht nur ll in Hallo gefunden wird
Ausgabe (enthält die Buchstaben)
}
sonst Ausgabe(enthält die Buchstaben nicht);
}
EDIT:
zu spät gesehen sry -.-
Nun ja mit Schleifen ist es doch das selbe Prinzip, versuch doch mal die Logik in den for Schleifen und der if Abfrage zu implementieren und wenn es hapert dann helfen wir dir.
Joar so passt das.
Du musst insgesamt eigentlich nur einmal durch das Wort durchlaufen und schauen, ob du den ersten Buchstaben der Buchstabenfolge findest. Wenn es den gibt, dann musst du nur schauen, ob die Folgebuchstaben passen, wenn nicht, dann musst du weiter gehen. Wenn du den ersten Buchstaben gar nicht findest, dann ist das auch nicht enthalten
Dann musst du erstmal aus den Strings ein char-Array machen. Zum Glück gibts da die Funktion toCharArray() von String.
Am besten noch eine Merkvariable "gefunden" erstellen und mit false initialisieren.
Dann läufst du in einer for schleife über das char Array deines Wortes, schaust ob der aktuelle Buchstabe gleich dem ersten der 2 gesuchten ist.
Ist das der Fall, und es kommt noch ein Buchstabe nach dem aktuellen, überprüf ob der nächste Buchstabe gleich dem 2. gesuchten ist.
Sind diese 2 Buchstaben auch gleich, setzte gefunden auf true.
Wenn du mit der Schleife fertig bist, überprüfe ob gefunden true ist, je nachdem gibst du dann was aus.
habe mal bisschen rummprobiert, das mit den tochararray was bertor meinte haben wir bisher noch nicht durchgenommen sprich kann auch nicht verwendet werden.
das ist dabei herausgekommen:
Java:
for (int i = 0; i < wort.length(); i++) {
for (int j = 0; j < buchstaben.length(); j++) {
if (wort.charAt(i) == buchstaben.charAt(j)) {
System.out.println("Die buchstaben kommen vor");
meine fragen hierzu:
wird alles richtig ausgeführt wenn ich als buchstaben z.b. ll eingebe kommt Die buchstaben kommen vor raus. sowei so gut, nur wieso wird der text 4 mal angezeigt?
was mir noch fehlt ist der fall wenn die buchstaben nicht vorkommen, setzt man da einfach ein else?
for (int i = 0; i < wort.length(); i++) {
for (int j = 0; j < buchstaben.length(); j++) {
if (wort.charAt(i) == buchstaben.charAt(j)) {
System.out.println("Die buchstaben kommen vor");
Bzzt, falsch. Überleg doch mal. Bei "hallo" und "ll" trifft die bedingung bei (i,j) = (2,0), (2,1), (3,0) und (3,1) zu. Das ist offenbar nicht sinn der sache.
for (int i = 0; i < wort.length(); i++)
{
for (int j = 0; j < buchstaben.length(); j++)
{
if (wort.charAt(i) == buchstaben.charAt(j))
{
System.out.println("Die buchstaben kommen vor");
wird alles richtig ausgeführt wenn ich als buchstaben z.b. ll eingebe kommt Die buchstaben kommen vor raus. sowei so gut, nur wieso wird der text 4 mal angezeigt?
So wie es da steht schaust du bei jedem Buchstaben in deinem Wort nach, ob er einer der ausgewählten Buchstaben ist. Du schaust jedoch nicht, ob die Buchstaben in der Reihenfolge vorkommen.
Nunja, besser wäre es, wenn du da einen boolean hättest, den du genau dann auf wahr setzt, wenn du feststellst, dass der letzte Buchstabe, der ausgewählten Buchstaben, vorhanden ist (du musst natürlich alle anderen vorher auch prüfen). Dann kannst du den Boolean ausgeben und hast ein Ergebnis
Wenn dus bis heute brauchst, dann ist das hier eine mögliche Lösung. Ich würde die allerdings nur verwenden, wenn du nicht weiter kommst.
Außerdem mag die an einigen Stellen etwas zu kompliziert sein, hab die eben mal zusammengebastelt, also ohne Gewähr.
Java:
String wort = "ababbcabccad";
String buchstaben = "abc";
boolean enthaeltBuchstaben= false;
// Iteriere über jeden Buchstaben in dem Wort
for (int buchstabeImWort = 0; buchstabeImWort < wort.length(); buchstabeImWort++)
{
// Wenn dieser dem ersten buchstaben gleich ist, so prüfe alle Folgenden.
for (int gesuchterBuchstabe = 0; gesuchterBuchstabe < buchstaben.length(); gesuchterBuchstabe++)
{
// Wenn der Index (charAt) über die Länge des Wortes hinausragt, springe aus der For-Schleife
// Außerdem springe aus der Schleife, wenn ein Buchstabe auftritt, der nicht in "buchstaben" ist.
if ((buchstabeImWort + gesuchterBuchstabe >= wort.length()) ||
(wort.charAt(buchstabeImWort + gesuchterBuchstabe) != buchstaben.charAt(gesuchterBuchstabe)))
{
break;
}
// Ansonsten wird nichts gemacht, außer wenn die Buchstaben in der Reihenfolge in dem Wort vorhanden sind.
// Dann prüfe, ob das auch für den letzten Buchstaben gilt. Wenn auch dieser vorhanden ist, dann sind alle
// Buchstaben in dem Wort in Reihenfolge vorhanden
else if (gesuchterBuchstabe == buchstaben.length()-1)
{
enthaeltBuchstaben = true;
}
}
}
// Bedingte Zuweisung:
System.out.println((enthaeltBuchstaben)?"Buchstaben sind enthalten":"Buchstaben sind nicht enthalten" );
// Ist nichts anderes als
if (enthaeltBuchstaben)
{
System.out.println("Buchstaben sind enthalten");
}
else
{
System.out.println("Buchstaben sind nicht enthalten");
}
vielen dank erstmal hierfür hat mir sehr weiter geholfen
das ist sozusagen das finale ergebnis. leider fehlt jetzt noch eine kleinigkeit bei der ich hilfe brauche:
ich muss die buchstaben mit den buchstaben1 tauschen,
das heist wenn das wort "hallo" ist und "buchstaben" ll, und buchstaben1 xx ist soll am ende dann haxxo ausgegeben werden, sozusagen das ll durch xx ersetzt wird.
hoffe mir kann jemand weiter helfen.
hier erstmal das was ich bisher gemacht habe:
Java:
package JavaApplication1;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class JavaApplication1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
// zähler
int z = 0;
//eingabe des wortes
System.out.println("Bitte geben Sie einen Text ein:");
String wort = (input.readLine());
System.out.println();
//eingabe der zwei buchstaben
System.out.println("Bitte geben Sie drei Buchstaben ein:");
String buchstaben = (input.readLine());
//eingabe der buchstaben die mit "buchstaben" ausgetauscht werden sollen
System.out.println("Bitte geben Sie einen belieben Text ein:");
String buchstaben1 = (input.readLine());
System.out.println();
for (int b = 0; b < wort.length() - buchstaben.length() + 1; b++) {
for (int g = 0; g < buchstaben.length(); g++) {
/*wenn x und y länger sind als wortlänge dann stop oder wenn buchstaben
ungleich im wort(im wort nicht vorkommen) */
if (wort.charAt(b + g) != buchstaben.charAt(g)) {
break;
} //wenn buchstaben im wort vorkommen prüfen ob letzter buchstabe auch vorkommt
// zähler z springt dann auf 1
else if (g == buchstaben.length() - 1) {
z++;
}
}
}
// wenn zähler auf 1 steht ausgabe von enthalten
if (z >= 1) {
System.out.println(buchstaben1 + " ->Bedingung ist korrekt");
System.out.println();
} // wenn zähler auf 0 dann ausgabe nicht enthalten
else {
System.out.println("Die Buchstaben sind nicht im Text enthalten");
}
} catch (Exception e) {
}
}
}