Arrays miteinander vergleichen

Shizmo

Aktives Mitglied
Hallo, ich will 2 char Arrays in einer If Anweisung miteinander vergleichen, allerdings funktioniert das nicht so wie ich mir das vorstelle:

So funktioniert es wunderbar
Java:
char[] abc = {'a','b','c','d'};
String text = "alpha";

if (text.charAt(0) == 'a') {
...

aber so
Java:
char[] abc = {'a','b','c','d'};
String text = "alpha";

if (text.charAt(0) == abc[0]) {
...

leider nicht, warum? es sind beides Char-Werte, warum können die nicht miteinander verglichen werden?
 
Kannst du vielleicht mal den vollständigen Code posten? Bei mir funktioniert das 2. Beispiel auch und wenn mich nicht alles täuscht sollte das auch immer gehen.

Wenn du ein Char-Array mit einem String vergleichen willst kannst du das auch direkt so machen:
Java:
char[] abc = { 'a', 'b', 'c', 'd' };
        String text = "alpha";
        if(text.equals(new String(abc))){
            //...
 
Habs grad nochmal wo anders probiert, da funktioniert es auch.
Habe es nämlich in einer Methode, kann es sein, dass die Methode nicht auf die main Methode zugreifen kann, ich brauch die Arrays aber auch in der main Methode.

Java:
public class Blabla {
   public static void main(String[] args) {
  
   char[] abcd = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

   System.out.print("Text: ");
   String text = SavitchIn.readLine();
  
   System.out.println(methSimple(text));
  
   System.out.println("Output: "+text);
  
   }
  
   static String methSimple (String text) {
      String output = "";

      for(int counter = 0; counter < text.length(); counter++) {
         if (text.charAt(0) == abcd[0]) {
            output = "Yes";
         }
         else {
            output = "No";
         }
      }
      return output;
   }
}

Die Schleife hat noch keine Bedeutung.
 
Ja das Array "abcd" ist garnicht im Scope deiner Methode. Also könntest du es zB deiner Methode einfach übergeben:
Java:
public class Blabla {
   public static void main(String[] args) {

   char[] abcd = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

   System.out.print("Text: ");
   String text = SavitchIn.readLine();

   System.out.println(methSimple(text, abcd));

   System.out.println("Output: "+text);

   }

   static String methSimple (String text, char[] abcd) {
      String output = "";

      for(int counter = 0; counter < text.length(); counter++) {
         if (text.charAt(0) == abcd[0]) {
            output = "Yes";
         }
         else {
            output = "No";
         }
      }
      return output;
   }
}
 
Haha super danke!!! 🙂

Jetzt noch eine Frage, ich hab mehrere INT-Arrays, wie kann ich die am besten miteinander zu einem String verknüpfen und Treturnen?

Also es soll sie nicht summieren sondern die Zahlen nacheinander zu einem String verknüpfen.
 
Zuletzt bearbeitet:
Ja genau so hab ich mir das vorgestellt, aber ich brauch die Ausgabe unbedingt nebeneinander und nicht [0, 18, 12, 8]

sondern 018128

//edit::

Hab jetzt sowas, weil ich will das die Zahl dann wieder als Buchstaben ausgegeben wird, das funktioniert ganz gut:

Java:
String output = String.valueOf(abcd[rightPos[0]]+""+abcd[rightPos[1]]);

Allerdings will ich dass immer wieder
Java:
+""+abcd[rightPos[X]]
dazukommt, solange das wort ist. X ist eine aufsteigende Zahl.
Also mit einer Schleife sollte sich das lösen lassen.
Aber wie kann ich in einer Schleife immer wieder das +""+abcd.... einer String-Variable anhängen, geht das??
 
Zuletzt bearbeitet:
Du kannst auch mit dem von Saheeda genannten Arrays.toString arbeiten und dann einfach die Klammern und Kommas entfernen.

Java:
int[] array = new int[]{1,2,3,4,5};
       int[] array2 = new int[]{6,7,8,9};
       String result=Arrays.toString(array)+Arrays.toString(array2);
     
       String s = result.replaceAll("[\\D]", "");
       System.out.println(s);
 
Okay super danke, gibts genau das gleiche, was auch mit Char Arrays funktioniert??

Also das replaceAll ersetzt irgendwie alle Buchstaben
 
Zuletzt bearbeitet:
Sorry für Doppelposting. Hab noch eine Frage:

Ich hab hier diesen Befehl
Java:
rightPos[pos] = counter+rot;

und hätte gern, wenn counter+rot über 26 geht, es wieder bei 0 anfängt. Also ich will meinen Array, der aus allen Kleinbuchstaben besteht zyklisch machen.
Also wenn er 29 ist, dann soll right[pos] = 2 sein.

Wie geh ich da am besten vor??
 
Gibt leider doch noch ein Problem, ich will Leerzeichen auch ausgeben, allerdings frisst dieser Befehl es wieder:
String output = result.replaceAll("\\W", "");

Nur ich denke diesmal kann man es nicht umgehen, denn bei der Standard-Ausgabe liefert nach jedem Komma ein Leerzeichen, ich will aber nur die Leerzeichen die ich selber eingebe.

Gibts da eine andere Lösung??
 
Perfekt das ist genau so wie ich es wollte, danke dir.

Eins brauch ich noch zusätzlich und zwar das zwei Char-Arrays abwechselnd zusammengefügt werden.

z.B.:
char[] arrayOne = {'a','b','c'};
char[] arrayTwo = {'x','y','z'};

wird zu einem String: axbycz.

Gibts da auch einen Trick??
 
#Sorry, verlesen.

Aber das sollte auch mit einem Stringbuilder machbar sein.
Oder einfach das Array durchlaufen und Stringkonkatinierung machen.
 
Zuletzt bearbeitet:
Ja hast recht, funktioniert super mit ner Schleife dazu.

Gibt es auch eine Möglichkeit, dass wenn in einem String zwei Leerzeichen hintereinander stehen, eins davon entfernt wird, so dass immer nur ein Leerzeichen steht.

Also "st ts" wird zu "st ts".
 
Haha großartig.

Vielen Dank nochmal, hab jetzt alles so hinbekommen wie ich es wollte.
Bis zum nächsten mal 🙂

LG

PS: Super Support hier!!!!
 

Zurück
Oben