Kezdőoldal » Számítástechnika » Programozás » Hogy tudnám átírni ezt a...

Hogy tudnám átírni ezt a programot? (Java)

Figyelt kérdés

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; }

}

}



2020. febr. 16. 19:16
1 2
 1/14 anonim ***** válasza:
57%

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.

2020. febr. 16. 19:28
Hasznos számodra ez a válasz?
 2/14 anonim ***** válasza:
60%
Kellene egy while ciklus, ami addig fut, ameddig az sc.nextLine() null vagy üres string, ebbe kellene berakni a palindrom vizsgálatot, amit akar ki is lehetne szervezni egy külön függvénybe
2020. febr. 16. 19:32
Hasznos számodra ez a válasz?
 3/14 anonim ***** válasza:
57%

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();

}

}

}

2020. febr. 16. 19:46
Hasznos számodra ez a válasz?
 4/14 A kérdező kommentje:
hatalmas vagy utolso! koszonom szepen, menz a zold kez!!
2020. febr. 16. 19:56
 5/14 anonim ***** válasza:
82%

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).

2020. febr. 16. 20:07
Hasznos számodra ez a válasz?
 6/14 anonim ***** válasza:
76%
Valóban, de én csak arra válaszoltam, ami a konkrét kérdés volt.
2020. febr. 16. 20:26
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:
37%
Nem is neked írtam, csak úgy megjegyzésképpen.
2020. febr. 16. 20:29
Hasznos számodra ez a válasz?
 8/14 anonim ***** válasza:
0%
Tudom, én csak megjegyeztem, hogy teljesen jogos észrevétel.
2020. febr. 16. 20:47
Hasznos számodra ez a válasz?
 9/14 anonim ***** válasza:
35%

A teljesség kedvéért:


boolean palindrom = IntStream.range(0, length / 2)

.allMatch(i -> word.charAt(i) == word.charAt(length - i - 1));

2020. febr. 16. 20:50
Hasznos számodra ez a válasz?
 10/14 anonim ***** válasza:
Tegyük hozzá azért, hogy ez csak szavakra működik, mondatokra nem.
2020. febr. 16. 20:58
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!