Çözüldü Java aynı stringler uyuşmuyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
27 Ağustos 2020
Mesajlar
2.455
Çözümler
23
Daha fazla  
Cinsiyet
Erkek
Javaya bugün başladım ve C#'a (Namı diğer Microsoft Java) benzediği içi çok yabancılık çekmedim ama anlamadığım bir şey oluştu. İki string de aynı olmasına rağmen true değer döndürmüyor ve "While(1)" çalışmıyor
Kod:
Java:
import java.util.Scanner;
class Main
{
private static int a;
  public static void main(String[] args)
  {

    while(1==1)
    {
      Scanner myObj = new Scanner(System.in);
      System.out.println("Enter vote [downvote or upvote]");
      String vote = myObj.nextLine();
      System.out.println(vote);
      if (vote=="downvote" || vote=="Downvote")
      {
        a-=1;
      }else if (vote=="upvote" || vote=="Upvote")
      {
        a+=1;
      }else
      {
        System.out.println("Please enter a valid vote");
      }
      System.out.println("Vote count: " + a);

    }

  }
}
Çıktısı şu:
Kod:
Enter vote [downvote or upvote]
downvote
downvote
Please enter a valid vote
Vote count: 0
Enter vote [downvote or upvote]
"Web Programlama" başlığı altında açmışım ama nasıl değiştircem bilmiyorum 😀
 
Son düzenleme:
Çözüm
Java:
        while(1==1)
        {
            Scanner myObj = new Scanner(System.in);
            System.out.println("Enter vote [downvote or upvote]");
            String vote = myObj.nextLine();
            vote = vote.toUpperCase();
            System.out.println(vote);
            if (vote.equals("DOWNVOTE"))
            {
                a-=1;
            }else if (vote.equals("UPVOTE"))
            {
                a+=1;
            }else
            {
                System.out.println("Please enter a valid vote");
            }
            System.out.println("Vote count: " + a);

        }

String comparisonları biraz araştır, integer değerler gibi compare edemezsin. Böyle kullanabilirsin.
Java:
        while(1==1)
        {
            Scanner myObj = new Scanner(System.in);
            System.out.println("Enter vote [downvote or upvote]");
            String vote = myObj.nextLine();
            vote = vote.toUpperCase();
            System.out.println(vote);
            if (vote.equals("DOWNVOTE"))
            {
                a-=1;
            }else if (vote.equals("UPVOTE"))
            {
                a+=1;
            }else
            {
                System.out.println("Please enter a valid vote");
            }
            System.out.println("Vote count: " + a);

        }

String comparisonları biraz araştır, integer değerler gibi compare edemezsin. Böyle kullanabilirsin.
 
Çözüm
While(1==1) kod çıktısı 6. satıra göre çalışıyor.

Yalnızca sorunlu olan kısım "string" karşılaştırmaları. Bunu da hiçbir if/else yapısında direkt olarak "Geçerli bir oy kullanın" kısmına atlamasından anlayabilirsin. Bu konuda ise zaten ben belirtene kadar @faux düzeltmesini yaptı.
 
Java'da Stringler birer class'tır. İki Stringi karşılaştırırken == kullanırsan bu onların referans numaralarını karşılaştır. Değerlerini değil. Değerlerini karşılaştırmak için string sınıfının equals fonksiyonunu kullanman lazım.

Örnek:
Java:
String isim = "fatih" ;
String isim2 = "fatih";
String isim3 = isim ;
System.out.println(isim == isim2 ); // False ---> Her ikisi de farklı değişken olduğu için False.
System.out.println(isim == isim3 ); //True ---> İkisini aynı değişkene referans ettiği için True.
System.out.println(isim.equals(isim2)); //True ---> Equal fonksiyonu stringin değerlerini kontrol ettiği için True
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı