Java Palindrom

Diskutiere Java Palindrom im Developer Network Forum im Bereich Hardware & Software Forum; So gleich noch ne Frage, ich hab folgendes: public class PallindromFrame { public static void main(String[] args) { String str =...
  • Java Palindrom Beitrag #1
Penecho

Penecho

Bekanntes Mitglied
Dabei seit
19.09.2001
Beiträge
2.636
Reaktionspunkte
1
Ort
RLP
So gleich noch ne Frage, ich hab folgendes:

Code:
public class PallindromFrame {
  public static void main(String[] args)  {
    String str = "reliefpfeiler";
   // String str = "test";
   boolean palli = true;

 /* palli =  str.charAt(0) == str.charAt(str.length()-1) && str.charAt(1) == str.charAt(str.length()-2)
             && str.charAt(2) == str.charAt(str.length()-3) && str.charAt(3) == str.charAt(str.length()-4)
             && str.charAt(4) == str.charAt(str.length()-5) && str.charAt(5) == str.charAt(str.length()-6);
*/

   if (palli)
      System.out.println("'" + str + "' ist ein Palindrom.");
    else
      System.out.println("'" + str + "' ist kein Palindrom.");
  }
}
Das funzt auch für die vorgegebenen Strings, aber ich würde gern eins für alle machen, daher hab ich den block ausgeklammert und versucht durch das zu ersetzen:

Code:
 int mitte = 0;
   if (str.length()%2 != 0){
       mitte = str.length() / 2; // falls string 5 chars hat, dann 5/2 = 3 da int aufrundet
   
   
   for (int i = 0; i < str.charAt(mitte); i++){
      palli = str.charAt(i) == str.charAt(str.length()-1 - i);
  }
   }
Aber das will nun nicht so recht :(

Da bräucht ich ma wieder nen Tip :ja:


Cu



Penecho
 
  • Java Palindrom Beitrag #2
fox99

fox99

Bekanntes Mitglied
Dabei seit
27.11.1999
Beiträge
3.948
Reaktionspunkte
27
Ort
Omicron Persei 8
Code:
 int mitte = 0;
   if (str.length()%2 != 0){
       mitte = str.length() / 2; // falls string 5 chars hat, dann 5/2 = 3 da int aufrundet
was weist du mitte zu, wenn eine unregade anzahl von zeichen vorgegeben ist? ich würde das if weglassen und nur
Code:
mitte = str.length() /2
machen.
Code:
   for (int i = 0; i < str.charAt(mitte); i++){
      palli = str.charAt(i) == str.charAt(str.length()-1 - i);
  }
   }
wieso nimmst du den wert des zeichen, das in der mitte steht?
müsste es nicht mit
Code:
for (int i = 0; i < mitte; i++){
besser gehen?

Code:
      palli = str.charAt(i) == str.charAt(str.length()-1 - i);
hier überschreibt su den wert von palli. dadurch verlierst du das ergebnis von dem vorherigen schleifendurchlauf. du musst also die werte logisch miteinader verknüpfen.
Code:
palli = palli && (str.charAt(i) == str.charAt(str.length()-1 - i));
und nicht vergessen palli vor der schleife zu initialisieren.
Code:
palli = true;

am ende müsste es ungefähr so ausschauen:
Code:
int mitte = str.length() /2;
palli = true;
for (int i = 0; i < mitte; i++){
      palli = palli && (str.charAt(i) == str.charAt(str.length()-1 - i));
  }
 
Zuletzt bearbeitet:
Thema:

Java Palindrom

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben