Hogy tudnám átírni ezt a programot? (Java)
A program addig olvas be szavakat a billentyuzetrol, amig nem kap egy ures sort. Ha azt kap, a program kilep. Amig nem kap azt addig pedig irja ki mindig, hogy az adott szo palindrom e. Valahogy sehogy sem sikerül ezt megoldanom. A kodom igy nez ki most;
import java.util.Scanner;
public class Palindrom {
public static void main (String[] args ) {
String original, reverse = "";
Scanner sc = new Scanner (System.in);
original = sc.nextLine ();
if (original.length ()! = 0) {
int lenght = original.length ();
for (int i = lenght 1; i> = 0; i--)
reverse = reverse + original.charAt (i);
if (original.equals (reverse)) {
System.out.printin ("yes");}
else {
System.out.println ("no"); }
else {
return; }
}
}
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Ez tele van szintaktikai hibával, legalább azokat javítsd már ki, aztán pastebin linket adj.
Meg írd le, hogy milyen logikát akarsz pontosan megvalósítani és mivel van konkrétan problémád.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Valahogy igy.
import java.util.Scanner;
public class Palindrom {
public static void main (String[] args ) {
Scanner sc = new Scanner (System.in);
String original = sc.nextLine();
while(original.length() != 0){
String reverse = "";
int lenght = original.length ();
for (int i=lenght-1; i>=0; i--){
reverse = reverse + original.charAt (i);
}
if (original.equals(reverse)) {
System.out.println("yes");
}
else {
System.out.println("no");
}
original = sc.nextLine();
}
}
}
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
A palindrom ellenőrzés logikája elég hulladék egyébként.
Ciklusban fűzöl össze Stringet, ez ugye alapból négyzetes komplexitást eredményez és ezután még összehasonlítod az eredetit a megfordítottal, tehát végig mész gyakorlatilag s+2-szer a Stringen (s a karakterek száma a Stringben), holott elég lenne egyszer is.
Elindulsz egy bal és jobb pointerrel a String első és utolsó karakterétől és ameddig bal kisebb mint jobb, összehasonlítod a karaktereket. Ha nem egyeznek, akkor nem palindrom, ha végig megy a ciklus, akkor meg igen
(a szóközöket, írásjeleket meg nyilván átugrod, ha nem csak szavakat vizsgálsz, hanem mondatokat is akár, ez nem derül ki a leírásodból).
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
A teljesség kedvéért:
boolean palindrom = IntStream.range(0, length / 2)
.allMatch(i -> word.charAt(i) == word.charAt(length - i - 1));
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!