Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
8
Cevap
579
Tıklama
0
Öne Çıkarma
Java kodu için yardım
V
5 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.");
}
}
}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



K
5 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
5 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
5 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
5 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
5 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
5 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
4 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
4 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.