String - Aufgabe mit Array(Zeichen liefern)

canyakan95

Bekanntes Mitglied
hallo meine aufgabe ist es:
public static String liefereZeichen(String str, int[] feld),
die aus dem String str schrittweise die Buchstaben ausliest, die im Array feld angegeben werden, und als String zurückliefert. Sie können dabei davon ausgehen, dass die Zahlen in feld aufsteigend sortiert sind.
Die Rückgabe für
liefereZeichen("Dies ist ein Test", new int[]{1,5,6,8})
ist somit der String "D it".
Beachten Sie, dass zum Beispiel die 1 im Array sich auf den ersten Buchstaben des Strings bezieht, hier also das "D", die 5 auf den 5-ten Buchstaben, hier also das " " etc.

ich habe das zwar programmiert,aber bei mir ist der erste buchstabe bei 0 und die leerzeichen werden nicht bei mir als ein string aufgefasst.
Code:
    public static String liefereZeichen(String str, int[]feld)
    {
        String s="";
        for(int i=0;i<feld.length;i++)
        {
            s+=str.charAt(feld[i]);
        }
       
        return s;
    }

und für das oben stehende beispiel bekomme ich als ausgabe raus : "iis" und nicht "D it"
 

Tarrew

Top Contributor
Der erste Buchstabe ist praktisch an der 0. Stelle und so weiter.
Also:
Java:
s+=str.charAt(feld[i]-1);
 

canyakan95

Bekanntes Mitglied
hallo
kannst du mir dann auch hier bei helfen ist fast die selbe aufgabe muss aber die zeichen löschen .
weis aber leider nicht , wie ich das entfernen hier implementieren soll.

Aufgabe:
Implementieren Sie die Methode
public static String entferneZeichen(String str, int[] feld),
die aus dem String str die Buchstaben entfernt, die im Array feld angegeben werden, und das Ergebnis als String zurückliefert. Sie können dabei davon ausgehen, dass die Zahlen in feld aufsteigend sortiert sind.
Beispiel:
Die Rückgabe für
entferneZeichen("Dies ist ein Test", new int[]{1,5,6,8})
ist somit der String "iess ein Test ".

Hier mein code:
Code:
    public static String entferneZeichen(String str, int []feld)
    {
        String s="";
        for(int i=0;i<feld.length;i++)
        {
            if(feld[i]!=str.charAt(feld[i]))
            {
                s+=str.charAt(feld[i]-1);
            }
        }
        return s;
    }
 
Zuletzt bearbeitet:

Tarrew

Top Contributor
Da fallen mir spontan zwei Möglichkeiten ein.
Die erste wäre die substring-Methode.
zB:
Java:
        String s = "Test";  
        int position = 3;
        System.out.println(s.substring(0, position-1) + s.substring(position));

Alternativ mit einem StringBuilder:
Java:
        StringBuilder sb = new StringBuilder("Test");
        int position = 3;
        sb.deleteCharAt(position-1);
        System.out.println(sb.toString());
 

Tarrew

Top Contributor
Ein bisschen musst du ja auch selber machen.
Ich hab dir gezeigt wie man ein Zeichen löscht.
Da baust du dann einfach eine for-Schleife drum, durchläufst einmal dein Array und löscht immer das passende Zeichen ;)
 

John Cena

Mitglied
Java:
public class Test
{
    public static void main (String[] args)
    {
        System.out.println(entferneZeichen("Dies ist ein Test", new int[]{1,5,6,8}));
    }

    public static String entferneZeichen(String str, int []feld)
    {
        String s = "";

            for (int i = 0; i < str.length(); i++)
                boolean eintragen = true;

            for (int j = 0; j < feld.length; j++)
            {
                  if (j == feld[j])
                    eintragen = false;

                  else if (eintragen)
                    s += str.charAt(j) ;
            }
        return s;
    }
}
Hey!
Ich weiß dieser Post ist schon etwas her, aber ich muss zufällig die gleiche Aufgabe erledigen, wo man aus einem String bestimmte Buchstaben entfernen soll. Ich wollte jetzt kein neues Thema erstellen und hoffe einer kann mir helfen, warum mein Code nicht klappen will. Vielen Dank im Vorraus!
 

John Cena

Mitglied
Hallo,

vielen Dank erst einmal für deine Antwort! Wenn ich mein Programm ausgebe kommt da : "Dies ist ein TestDies" raus. Aber eigentlich müsste da "iess ein Test" rauskommen. Die Buchstaben sollten an den Stellen 1,5,6,8 gelöscht werden und das neue Wort soll ausgegeben werden.
Mfg

John Cena
 

Bitfehler

Bekanntes Mitglied
Zu dieser Aufgabe fallen mir spontan zwei Ansätze ein.
  1. Man löscht die Zeichen an den geforderten Positionen, so wie es bereits weiter oben beschrieben ist. Dafür läuft man durch das Array, am Besten von hinten nach vorne, und "schneidet" die nicht gewünschten Buchstaben aus der Zeichenkette aus.
  2. Man behält alle gewünschten Zeichen. Dazu muss man über die Zeichenkette laufen, so wie du das vorhast. Innerhalb dieser Schleife wird dann noch eine Schleife über das Array benötigt. Innerhalb der zweiten Schleifen wirst du folgenden Vergleich brauchen:
    Code:
    if (i == (feld[j]-1)){
                            eintragen = false;
                            break;
                          }
    Abschließend prüft du in der äußeren Schleife, ob das Zeichen verwendet werden soll. Das kannst du so machen wie du es bereits tust, abgesehen davon das du die verwendete Variable von j auf i ändern musst.
 

John Cena

Mitglied
Java:
    public static String entferneZeichen(String str, int []feld)
    {
        String s = "";

            for (int i = 0; i < str.length(); i++)
            {

                boolean eintragen = true;

            for (int j = 0; j < feld.length; j++)
            {
                  if (i == (feld[j]-1))
                    eintragen = false;
            }
                   if (eintragen)
                    s += str.charAt(i) ;
            }
        return s;
    }

Guten Abend,

vielen Dank für deine Hilfe! Ich habe versucht deine Hinweise zu berücksichtigen und hab dieses mal "Des tein Test" rausbekommen. Ich hab auch das break mal reingeschrieben, das hat aber leider auch nicht zum richtigen Ergebnis geführt.
 
Zuletzt bearbeitet von einem Moderator:

Tarrew

Top Contributor
Also wenn ich das ausführe kommt da dein erwartetes "iess ein Test" raus:
oYZxb.png
 

John Cena

Mitglied
Hallo,

da hast du Recht bei mir kommt auch dieses mal das richtige raus! Ich hab mich wohl verguckto_O. Vielen Dank für eure Hilfen, ich war echt am verzweifeln!
Schönen Abend noch!
 

Bitfehler

Bekanntes Mitglied
Sicherheitshalber hier der Code.

Java:
    public static void main (String[] args)
    {
     System.out.println(entferneZeichen("Dies ist ein Test", new int[]{1,5,6,8}));
    }

    public static String entferneZeichen(String str, int []feld)
    {
        String s = "";

            for (int i = 0; i < str.length(); i++){
                boolean eintragen = true;

                for (int j = 0; j < feld.length; j++)
                {
                    if (i == (feld[j]-1)){
                        eintragen = false;
                        break;
                      }
                }
                if(eintragen){
                    s += str.charAt(i) ;
                }
            }
        return s;
    }
 
Zuletzt bearbeitet von einem Moderator:

Oben