# Umgang mit Felder



## FiselM (14. Januar 2008)

Hallo, ich habe da ein kleines Problem bezgl. Umgang mit Felder, wer kann mir da helfen?


```
import ConsoleInOut.*;

class Testa
{
 public static void main(String arg[])
 {
   char [] eingabe;
   char [] vergleich;
   int wert1 = 0;
   int wert2 = 0;
   int wert3 = 0;
   //Eingabe eines Wortes mit einer länge x
   eingabe = Console.console_in_chars();
   //Eingabe eines zweiten Wortes mit der länge x
   vergleich = Console.console_in_chars();
   // Bestimmung der länge von Wort 1
   wert1=eingabe.length;
   // Bestimmung der länge von Wort 2
   wert2=vergleich.length;
   // Wenn Wort 1 Größer ist als Wort2 dann
   if(wert1 > wert2)
      {
          // Differenz länge um welches Wort 1 größer ist als Wort 2
          wert3 = wert1 - wert2;
          // ich suche eine Möglichkeit das Wort 2 mit sich selber so zu verlängern
          // das es gleich groß ist wie Wort 1
          // Beispiel
          // Wort1 =  HalliHallo  und Wort2 = hallo
          // Vergleich Wort1 um 5 Zeichen Größer
          // Ergebnis Wort2 = hallohallo
          // wie kann ich das realisieren und Wort1 und Wort2 müssen Felder vom Typ char sein?
        }
    
    }
}
```

Viele Grüße, Michael


----------



## zerix (15. Januar 2008)

Hallo,

es wäre nützlich, wenn du sagen würdest welches Problem du hast oder darf man sich selbst das Problem überlegen? 

MFG

zEriX


----------



## FiselM (15. Januar 2008)

Hallo, das Problem, dass das Programm lösen soll ist ein Ver- und Entschlüsselung von einem Wort. Durch Eingabe eines Schlüssels und eines Begriffes soll der Begriff anhand 
des Schlüssels codiert werden. Dazu muss der Schlüssel genau soviel Zeichen haben
wie der Begriff. Wenn der Schlüsel weniger Zeichen hat, so muss die Anzahl der Zeichen
des Schlüssels mit sich weiter so erweitert werden das er der Anzahl Zeichen des Begriffes entspricht?


----------



## zerix (15. Januar 2008)

Na dann mach das doch einfach. 

Da man Arrays ja nicht erweitern kann, würde es sich doch anbieten noch ein drittes Array zu erstellen, welches genau so lang ist wie das zu verschlüsselnde Wort. Da musst du dann nur noch die Zeichen rein packen.

MFG

zEriX


----------



## Matze (15. Januar 2008)

Du hast immer noch nicht wircklich gesagt, wo dein Problem ist. Ist es ein Verständnissproblem oder kannst du dies nur nicht in Java umsetzen?


----------



## FiselM (15. Januar 2008)

Mein Problem liegt eher in der Umsetzung mit Java, ich versuche mit den mir gestellten Aufgaben meine Programmierkenntnisse zu erweitern und verfeinern, muss allerdings zugeben, dass ich im Java -Programmierumfang (generell Programmieren) noch Anfänger mit Tendenz zu Fortschritten bin.


----------



## MiMi (15. Januar 2008)

Ich seh zwar ein Fragezeichen aber keine wirkliche Frage. Du schreibst nur was dien Programm koennen soll.


----------



## Matze (15. Januar 2008)

Ok und WAS GENAU kriegst du in Java net hin?


----------



## FiselM (15. Januar 2008)

Ich bin jetzt soweit, das ich ein neues Feld angelegt habe mit der Größe des Feldes wert1.Nun will ich das Feld befüllen mit dem Zeichen des 2 ten Feldes wert2. und zusätzlich die weiteren Feldelemente wieder mit den ZEichen beginnend von der Position 1.

Beispiel wert1 =   HALLO
             wert2 =   HAL
Ergebnis meines Algorythmus             neu   =    HALHA


```
int wert = 0;
   char neu[] = new char[wert1];
   if(wert1 > wert2)
      { 
          
          for ( int i = 0; i < wert1; i++)
          {
              neu[i-wert] = vergleich[i-wert];
            }
```

Viele Grüße,


----------



## Matze (15. Januar 2008)

Du kappierst es nicht oder? Du musst schon eine FRAGE stellen.

Aber wenns dir hilft, zwei Strings kann man mit conncat(String str) oder "+" verbinden.


----------



## FiselM (15. Januar 2008)

das mit dem String ist OK aber ich möchte mit dem Ergebnis als Feld im Typ char weiterarbeiten und habe jetzt folgende Frage?

Wenn ich einen neue variable neu1 Typ char als Feld möchte ich zuerst ein Feld vergleich einfügen und daran das feld neu dazu addieren?

Im Prinzip die gleiche Funktion wie man 2 Strings miteinander verbindet 

  String1 = String2 +String3

 neu1[] = vergleich[] + neu[];    

Viele Grüße, Michael


----------



## MiMi (15. Januar 2008)

Also lautet deine Frage: "Wie kann ich 2 String arrays in ein Char array zusammenfuegen?" ?


----------



## Matze (15. Januar 2008)

Ok versteh ich nicht ganz, aber dass wird so nicht klappen, da der Typ Char nur EIN Zeichen aufnimmt. Das heißt neu1 kein Char sein darf, eher String und dann muüsste es heißen:

```
neu1[] += vergleich[] + neu[]; 

oder

neu1[].concat(vergleich[] + neu[])
```


Ist möglich dass du auch noch charsten musst.


----------



## FiselM (15. Januar 2008)

neu1[].concat(vergleich[] + neu[]);

jetzt meldet der Compiler eine Fehler .class expected?


----------



## Matze (15. Januar 2008)

```
neu1[].concat(String.valueOf(vergleich[]) + String.valueOf(neu[]))
```

Bitte das nächste Mal die Code-Tags verwenden!


----------



## MiMi (15. Januar 2008)

@Matze
Ich hab das Problem immer noch net verstanden, aber von diesem concat hab ich noch nie was gelesen. Ich find auch so nix dazu bei google?!


----------



## Matze (15. Januar 2008)

@MiMi
Dann schau mal in die API unter String


----------



## MiMi (15. Januar 2008)

Hmpf, ich hatte nur " concatenation operator ( + )" gefunden ^^. Naja was neues unsinniges gelernt, da man das + ja genauso nutzen kann


----------



## FiselM (15. Januar 2008)

ich habe mir da mal einen Alternativen Code einfallen lassen. Leider bekomme ich bei der 
Ausführung eine Fehlermeldung 

"java.lang.ArrayIndexOutOfBoundsException: 4
	at Testa.main(Testa.java:42)
"

Kann mir jemand sagen voran der Fehler liegt?


```
/**
 * Beschreiben Sie hier die Klasse TerminplanerUI.
 * 
 * @author (Michael Fisel) 
 * @version (11.01.2008)
 */
import ConsoleInOut.*;

class Testa
{
 public static void main(String arg[])
 {
   char [] eingabe;
   char [] vergleich;
   int wert1 = 0;
   int wert2 = 0;
   int wert3 = 0;
   //Eingabe eines Wortes mit einer länge x
   System.out.println("Eingabe eines Begriffes zum Codieren" );
   eingabe = Console.console_in_chars();
   //Eingabe eines zweiten Wortes mit der länge x
   System.out.println("Eingabe eines Schlüssels zum Codieren" );
   vergleich = Console.console_in_chars();
   // Bestimmung der länge von Wort 1
   wert1=eingabe.length;
   // Bestimmung der länge von Wort 2
   wert2=vergleich.length;
   // Wenn Wort 1 Größer ist als Wort2 dann
   int wert = 0;
   wert3 = wert1 - wert2;
   char neu[] = new char[wert3];
   //char neu1[] = new char[wert1];
   if(wert1 > wert2)
      { 
          
          for ( int i = 0; i < wert2; i++)
          {
              neu[i] = vergleich[i-wert];
             }
            for ( int i = wert2; i < wert1; i++)
          {
              neu[i] = vergleich[i-wert2];
              
             } 
             System.out.println(neu);
         // neu1 += vergleich + neu;    
         // neu1.concat(String.valueOf(vergleich) + String.valueOf(neu)); 
          
          
          }
    
    }
}
```

Viele Grüße, Michael


----------



## MiMi (15. Januar 2008)

Die Meldung heist, das er versucht auf die 4. Stelle im Array zuzugreifen, aber diese Stelle gibt es net, da das Array kleiner ist.


----------



## Matze (15. Januar 2008)

1. Wo genau tritt der auf
2. Na ganz einfach: Irgendwo überschreitest du eine Array-Grenze


----------



## MiMi (15. Januar 2008)

Aehm du machst in der 1. for schleife

```
neu[i] = vergleich[i-wert];
```


wert bleibt aber immer 0?


----------

