2013-05-27 129 views
0

我想教我自己的java的基礎知識。我剛剛完成了一門課,教會了python的基礎知識,所以我知道if語句和for循環是如何工作的。我正在用java編寫一個基本的程序來測試它們,但是if語句不工作,程序也沒有通過for循環。任何幫助將是一個讚賞。如果語句和for循環不工作在java

import java.util.Scanner; 

public class messingAround { 
    public static void main(String[] args) { 
     Scanner play = new Scanner(System.in); 
     messingAround1 gameObject = new messingAround1(); 
     System.out.println("how many times would you like to play? "); 
     int time = play.nextInt(); 
     gameObject.play(time); 
    } 
} 


import java.util.Scanner; 
public class messingAround1 { 

    public void play(int game){ 
     Scanner ques1 = new Scanner(System.in); 
     int game2; 
     String ques; 
     for(game2 = game; game > 0; game--); 
      System.out.println("Answer y or n"); 
      ques = ques1.nextLine(); 
      if (ques == "y"){ 
       System.out.println("You are nice"); 
      } else { 
       System.out.println("You are not nice"); 
      }  
     } 
    } 
} 

謝謝!

+0

每次標題說,在Java中的基本語句之一是不工作,這是不可避免的,因爲與'字符串相等的==' 。 – dasblinkenlight

+1

在for()後面刪除分號';',並將該塊放入大括號'{..}'中。而且你需要知道**不能使用'=='比較,而是使用'equals()'(或'compareTo()')進行比較。請檢查以下內容:http://docs.oracle.com/javase/tutorial/java/data/comparestrings.html – Barranka

+0

@dasblinkenlight可能不總是......但它確實頻繁發生 – Barranka

回答

3

不要拿String對象與==運營商。相反,使用.equals()方法,因爲==運算符僅比較變量是否指向內存中的同一個地址,.equals()方法是否比較它們的值。

if ("y".equals(ques)){ 
    System.out.println("You are nice"); 
} else { 
    System.out.println("You are not nice"); 
} 

對於for循環,我覺得一切都OK,如果你提供的game變正值,如果你刪除它的身體前;

for(game2 = game; game > 0; game--) { 
    //do your stuff 
} 
+0

謝謝,解決了這個問題。我沒有意識到你必須對字符串使用.equals()方法。我覺得把愚蠢的錯誤放在括號裏應該是分號。 – user2426500

1

更換

if (ques == "y"){ 

if (ques.equals("y")) { 

甚至更​​好

if ("y".equals(ques)) { 
0

正如其他人所提到的,您要使用.equals()

然而,在for循環,應該是這樣的:

for(game2 = game; game2 > 0; game2--){ 
     System.out.println("Answer y or n"); 
     ques = ques1.nextLine(); 
     if (ques.equals("y")){ 
      System.out.println("You are nice"); 
     }else{ 
      System.out.println("You are not nice"); 
     } 



    }