Zeichenkette

FiselM

Mitglied
Ich habe eine Fehlermeldung beim ausführen des folgenden Programmes ?

java.lang.ArrayIndexOutOfBoundsException: 7
at Zeichenkette.main(Zeichenkette.java:43)


Java:
/**
 * Beschreiben Sie hier die Klasse Zeichenkette.
 * 
 * @author (Michael Fisel) 
 * @version (07.11.2007)
 */
import ConsoleInOut.*;
import java.util.*;
public class Zeichenkette
{
  public static void main (String args[]) 
   { 
    
    // Deklaration der variablen   
    //char Text[] = new char [20] ;
    char Text[];
    char Einsatz ;
    char Ersatz[] ;
    char neu[];
    
    // Eingabe der Werte 
    System.out.println();
    System.out.println("Bitte Text eingeben :");
    Text = Console.console_in_chars();
    System.out.println();
    System.out.println("Bitte geben Sie das zu ersetzende Zeichen ein : ");
    Einsatz = Console.console_in_char();
    System.out.println();
    System.out.println("Bitte geben Sie die einzusetzende Zeichenkette ein : ");
    Ersatz = Console.console_in_chars();
    
      int Anzahl = Text.length;
          System.out.println(Anzahl);
      int zahl = Ersatz.length;
          System.out.println(zahl);
      int oft = 0;
      
      
      
      for (int i = 0; i <= Anzahl; i++)
          {
             if (Text[i] == Einsatz)
                { 
                    oft++;
                }
          }
      int laeng = (Anzahl + (oft *zahl));  
      System.out.println(laeng);
   } 
  
}

Weis jemand voran das liegt?

Viele Grüße,
 
ich habe ein Problem ich habe eine Eingabe in ein Feld vom Typ char. In der zweiten Eingabe gebe ich 1. Zeichen ein. Als drittes gebe ich wieder mehrere Zeichen vom Typ char ein( wieder als Feld). Jetzt generire ich ein neues Feld vom Typ char, und will es mit dem Wert aus der 1 Eingabe Zeichenweise füllen. Wenn ein Char-Wert aus dem Feld der ersten eingabe = dem Char wert der 2 Eingabe entspricht dann soll dieser Wert mit dem Wert aus der 3 Eingabe ersetzt werden? Die länge den neuen Feldes habe ich schon ermittelt und ein neues Feld erstellt. Nur beim füllen habe ich meine Probleme?

Java:
      char neu[] = new char[laeng];
      for (int i = 0; i < Anzahl; i++)
           {
           if (Text[i] == Einsatz)
              {
                  Text[i] = Ersatz;
                } 
           if (Text[i] != Einsatz)
              {
                  Text[i] = Text[i]; 
                }
            } 
      neu = Text;
      System.out.println(neu);

Viele Grüße, Michael
 
Was versuchst du denn da zu schaffen?

Sorry, aber ich habe deine Beschreibung echt nicht ganz verstanden. Du schreibst da irgendwas von drei Eingaben, in dem Quellcode sehe ich aber nur zwei Variablen, die etwas enthalten können, Text und Ersatz.

Ich bin mir jetzt nicht 100% sicher, aber ich meine dass dein Vergleich auch an == Scheitern kann. "Man verwendet" da obj.equals() statt == um zu überprüfen, ob etwas gleich ist.
 
Ich schickt Dir mal meinen Gesamten Quelltext

Java:
/**
 * Beschreiben Sie hier die Klasse Zeichenkette.
 * 
 * @author (Michael Fisel) 
 * @version (07.11.2007)
 */
import ConsoleInOut.*;
import java.util.*;
public class Zeichenkette
{
  public static void main (String args[]) 
   { 
    
    // Deklaration der variablen   
    //char Text[] = new char [20] ;
    char Text[];
    char Einsatz ;
    char Ersatz[] ;
    
    
    // Eingabe der Werte 
    System.out.println();
    System.out.println("Bitte Text eingeben :");
    Text = Console.console_in_chars();
    System.out.println();
    System.out.println("Bitte geben Sie das zu ersetzende Zeichen ein : ");
    Einsatz = Console.console_in_char();
    System.out.println();
    System.out.println("Bitte geben Sie die einzusetzende Zeichenkette ein : ");
    Ersatz = Console.console_in_chars();
    
      int Anzahl = Text.length;
          System.out.println(Anzahl);
      int zahl = Ersatz.length;
          System.out.println(zahl);
      int oft = 0;
         for (int i = 0; i < Anzahl; i++)
          {
             if (Text[i] == Einsatz)
                { 
                    oft++;
                }
          }
      int laeng = ((Anzahl-oft) + (oft *zahl));  
      System.out.println(laeng);
      char neu[] = new char[laeng];
      for (int a = 0; a < laeng; a++)
           {
               //neu = Text;
               if (Text[i] == Einsatz)
              {
                  for (int j = 0; j < zahl;j++)
                  {
                      Text = Ersatz;
                    }
                } 
           if (Text[i] != Einsatz)
              {
                  neu[i] = Text[i]; 
                }
            } 
      
      System.out.println(neu);
   } 
  
}
 
Java:
char neu[] = new char[laeng];
         
      for (int a = 0; a < laeng; a++)
           {
              if (Text[i] != Einsatz)
              {
                  neu[a] = Text[i]; 
                }
              if (Text[i] == Einsatz)
                 {
                     neu[a] = Ersatz[];
                    }
            } 
      
      System.out.println(neu);
 
zu meinem letzten Beitrag fehlt noch die Anmerkung das beim debuggen in der Zeile

neu[a] = Ersatz[];

eine Fehlermeldung .class expected erscheint.
 
zu meinem letzten Beitrag fehlt noch die Anmerkung das beim debuggen in der Zeile

neu[a] = Ersatz[];

eine Fehlermeldung .class expected erscheint.
 
Sorry, aber es gibt da wirklich viele Sachen, die ich einfach in deinem Quellcode nicht verstehe, es sind so sachen wie:

Code:
for (int j = 0; j < zahl;j++)
{
     Text = Ersatz;
}

Wieso lässt du da zig mal die gleiche Operation durchführen

Ich mach dir mal einen anderen Vorschlag, schreib mir bitte einfach, was du genau bezwecken willst und dann kann ich dir auch helfen.
 
Ich habe mal meine Problem formuliert

das eine Zeichenkette einliest und ein Zeichen in dieser Zeichenkette durch eine andere Zeichenkette ersetzt. Dieses Zeichen sowie die einzusetzende Zeichenkette müssen ebenfalls erfasst werden.

Beispiel:

Bitte geben Sie eine Zeichenkette ein:
Von daß auf dass umstellen
Bitte geben Sie das zu ersetzende Zeichen ein:
ß
Bitte geben Sie die einzusetzende Zeichenkette ein:
ss
Ausgabe:
Von dass auf dass umstellen


Verwenden Sie zur Eingabe einer Zeichenkette folgenden Aufruf:
char [] Zeichenkette = Console.console_in_chars();

Java:
/**
 * Beschreiben Sie hier die Klasse Zeichenkette.
 * 
 * @author (Michael Fisel) 
 * @version (07.11.2007)
 */
import ConsoleInOut.*;
import java.util.*;
public class Zeichenkette
{
  public static void main (String args[]) 
   { 
    
    // Deklaration der variablen   
    //char Text[] = new char [20] ;
    char Text[];
    char Einsatz ;
    char Ersatz[] ;
    
    
    // Eingabe der Werte 
    System.out.println();
    System.out.println("Bitte Text eingeben :");
    Text = Console.console_in_chars();
    System.out.println();
    System.out.println("Bitte geben Sie das zu ersetzende Zeichen ein : ");
    Einsatz = Console.console_in_char();
    System.out.println();
    System.out.println("Bitte geben Sie die einzusetzende Zeichenkette ein : ");
    Ersatz = Console.console_in_chars();
    
      int Anzahl = Text.length;
          System.out.println(Anzahl);
      int zahl = Ersatz.length;
          System.out.println(zahl);
      int oft = 0;
      int i = 0;
         for (i=0; i < Anzahl; i++)
          {
             if (Text[i] == Einsatz)
                { 
                    oft++;
                }
          }
          
         
          
      int laeng = ((Anzahl-oft) + (oft *zahl));  
      System.out.println(laeng);
      char neu[] = new char[laeng];
         
      for (int a = 0; a < laeng; a++)
           {
              if (Text[i] != Einsatz)
              {
                  neu[a] = Text[i]; 
                }
              if (Text[i] == Einsatz)
                 {
                    for(int j = 0; j < zahl; j++)
                    {
                     neu[a] = Ersatz[j];
                    }
            } 
        }
      
      System.out.println(neu);
   } 
  
}
 
Zurück