Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
516
Tıklama
0
Öne Çıkarma
Java kodu için yardım
V
4 yıl
Er
Konu Sahibi

Selamlar, amacım girilen sayının palindrom sayı olup olmaması. Acaba nerede yanlış yaptığımı ve doğrusunun nasıl olduğunu anlatabilir misiniz?


// Girilen sayının palindrom olup olmadığını belirler

package ödev;

import java.util.Scanner;


public class Palindrome {

public static void main(String args[]) {

Scanner scan = new Scanner(System.in);
Integer palindromSayi1 = scan.nextInt();
scan.close();

int palindromSayi2 = 0;

while(palindromSayi1 !=0) {
int digit = palindromSayi1 % 10;
palindromSayi2 = palindromSayi2 * 10 + digit;
palindromSayi1 /= 10;
}


//String s1=String.valueOf(palindromSayi1);
//String s2=String.valueOf(palindromSayi2);

System.out.println(palindromSayi2);

if(palindromSayi2!=palindromSayi1) {
System.out.println(palindromSayi1+" sayısı palindrom değil.");
}
else {
System.out.println(palindromSayi1+" sayısı palindrom.");
}
}
}




K
4 yıl
Çavuş

Çözüldü mü bilmiyorum ama çözümü paylaşıyorum

< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi Kalkon -- 16 Ağustos 2020; 8:48:46 >

V
4 yıl
Er
Konu Sahibi

Çözümünüz için teşekkür ederim. Yazdığınız kod için palindrom olmayan sayı girildiğinde "..palindrom değil","..palindrom" yazıyor. Ben de "break;" ve en aşağıdaki if bloğunu silerek, ondan önceki if bloğuna else ekleyerek yeniledim ve çalışıyor. Kolay gelsin.


public class Palindrome {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

Integer palindromSayi1 = scan.nextInt();
scan.close();
int yedek = palindromSayi1;

while(palindromSayi1.toString().length() > 1) {

int kalan = palindromSayi1 % 10;

palindromSayi1 -= kalan;

int ilk = palindromSayi1 / (int) Math.pow(10, palindromSayi1.toString().length()-1);

palindromSayi1 -= ilk * (int) Math.pow(10, palindromSayi1.toString().length()-1);

palindromSayi1 /= 10;

if(kalan==ilk) {

System.out.println(yedek+" sayısı palindrom.");


}else {
System.out.println(yedek+" sayısı palindrom değil.");
}
}

}
}


Bu mesaja 1 cevap geldi.
K
4 yıl
Çavuş

Aynen o kısmı atlamışım dediğiniz gibi de olabilir ama o durumda birçok kez palindrom diye yazacaktır o nedenle an mantıklı çözüm if bloğunun içine palindromSayi1 = yedek şeklinde ekleme yapmak herhalde en son halini ekliyorum

< Resime gitmek için tıklayın >




Bu mesajda bahsedilenler: @Valkyrie14
T
4 yıl
Yarbay

15-20 satırda çözdüğünüz şey Raku da tek satırda çözülebiliyor:

< Resime gitmek için tıklayın >



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.
V
4 yıl
Er
Konu Sahibi

Evet ama dillerin genellikle kullanım alanları birbirinden farklı olabiliyor. Yukarıdaki problem Python ile daha basit şekilde de yazılabilir. Zaten o örneği de Java'da kendimi bir aşama daha katetmek için sormuştum. İlginiz için teşekkür ederim .


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
4 yıl
Yarbay

Yukardaki 20+ satırlık çözüm, palindrom problemi için fazla karışık. Java 8 ile fonksiyonel stilde veya Java 7 ile rekürsif stilde cok daha açık çözüm üretilebilir. Örneğin altta rekürsif stilde çözüm hem cok net hem de sadece sayı değil sözcüklerde de palindromu test edebiliyor.

< Resime gitmek için tıklayın >



< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @Valkyrie14
T
3 yıl
Teğmen

quote:

Orijinalden alıntı: Tuğkan-0153

15-20 satırda çözdüğünüz şey Raku da tek satırda çözülebiliyor:

< Resime gitmek için tıklayın >
public static void main(String[] args) {
String str = new Scanner(System.in).next(); System.out.println(IntStream.range(0, str.length() / 2).noneMatch(i-> str.charAt(i) != str.charAt(str.length() - i - 1)) ? "Palindrom" : "Palindrom Degil");
}


Bu mesaja 1 cevap geldi.
T
3 yıl
Yarbay

fonksiyonel stilde yazınca her kod kısalır.



< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @The_eXXe
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.