2014-11-07 164 views
2

所以我剛開始學習Java,它的字面意思就像我的第一天,我想嘗試做一個coinflip遊戲。我已經知道了大量的Javascript,所以我試圖將這些知識應用到Java。所以,除了一件事情之外,所有事情都一直在努力:提示用戶進行選擇。所以在線閱讀,我必須導入掃描儀,所以我做到了,因爲你可以從我的代碼中看到。我也嘗試了一些代碼,你可以讓用戶導入一個字符串,但你可以稍後在我的程序中看到我將變量userChoice更改爲一個數字。所以基本上我只需要幫助。如果有某種方法可以存儲一個可以存儲數字或字符串的變量類型,那麼這種方法最好。但即時通訊開放給其他方式做到這一點!先謝謝了!這裏是代碼:你如何提示用戶輸入java

package test; 
import java.util.Scanner; 
public class testclass { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     System.out.println("hi"); 
     int bob; 
     bob = (int) Math.floor(Math.random()*2); 
     System.out.println(bob); 


      System.out.println("Enter heads or tails?"); 
      System.out.println("You entered "+ userChoice); 

      if (bob == 0) { 
      System.out.println("Computer flipped heads"); 
      } 

      else { 
       System.out.println("Computer flipped tails"); 
      } 



      if(userChoice == "Heads") { 
       userChoice = 0; 

      } 

      else { 
       userChoice = 1; 
      } 



      if (userChoice == bob) { 
       System.out.println("You win!"); 
      } 


      else { 
       System.out.println("Sorry you lost!") 

      } 


      } 

    } 
+0

哦是的順便說一句,你可以看到,我經常提到userChoice,這就是我想要的無論什麼商店用戶導入的變量名稱! – 2014-11-07 02:44:07

+0

通過導入,你的意思是輸入文字?這通常被稱爲「輸入」,「導入」是一個非常不同的東西? – Pokechu22 2014-11-07 02:44:39

+0

哦,好吧,對不起,這就是我的意思,我不是一個非常好的程序員,但XP。有時我的終結者有點偏離! – 2014-11-07 03:28:32

回答

1

使用掃描儀,正如你所說的:

Scanner in = new Scanner(System.in); 

然後,提示用戶輸入的東西:

String userChoice = in.nextLine(); 

此外,當你比較字符串:

if(userChoice == "Heads") {... 

這對於非原始對象來說是不好的。最好僅使用==來比較int s或enum s的值。如果你比較一個像這樣的字符串,它將不起作用,因爲它檢查對象是否相同。相反,比較像這樣:

if(userChoice.equals("Heads")) {... 

此外,要轉換爲int(注意:你不能在一個類型的對象轉換爲另一種不以任何方式與您必須創建一個新的對象,如果你想做到這一點),這樣做:

int myInt = Integer.parseInt(myString); // NOTE: Can throw NumberFormatException if non-number character is found. 

所以,你的程序應該看起來有點像:

package test; 
    import java.util.Scanner; 

    public class testclass { 

     public static void main(String[] args) { 
      //System.out.println("hi"); 
      Scanner in = new Scanner(System.in); 
      int bob; 
      int userChoice; 
      String input; 
      bob = (int) Math.floor(Math.random()*2); 
      System.out.println(bob); 

      System.out.println("Enter heads or tails?"); 
      input = in.nextLine(); // waits for user to press enter. 
      System.out.println("You entered "+ input); 

      if (bob == 0) { 
       System.out.println("Computer flipped heads"); 
      } 

      else { 
       System.out.println("Computer flipped tails"); 
      } 

      if(input.equals("Heads")) { 
       userChoice = 0; 
      } 
      else { 
       userChoice = 1; 
      } 

      if (userChoice == bob) { 
       System.out.println("You win!"); 
      } 
      else { 
       System.out.println("Sorry you lost!"); 
      } 

      in.close(); // IMPORTANT to prevent memory leaks 
     } 
    } 
+0

非常感謝你!我真的很感謝這個解釋的詳細程度和答案的徹底性!非常感謝花時間寫這篇文章!很高興! – 2014-11-07 03:17:50

0

您已經導入了Scanner類,因此您現在可以創建一個類型爲Scanner的變量來進行輸入。

Scanner in = new Scanner(); 
userChoice = in.nextLine(); 

nextLine()可用於從用戶輸入字符或字符串。

要將字符串轉換爲整數,您可以按以下方式將整數值分配給字符串。

if(userChoice == "Heads") { 
      userChoice = "" + 0; 
      } 
     else { 
      userChoice = "" + 1; 
     } 
+0

另一部分是將它轉換爲一個'int'(至少從目前的問題我可以看出來;這是很難看的) – Pokechu22 2014-11-07 02:54:19

+0

@ Pokechu22該字符串可以很容易地轉換爲整數 – 2014-11-07 03:07:16

+0

是的,但它似乎像OP不知道如何,所以最好包括這一點。 – Pokechu22 2014-11-07 03:08:12

0

已經導入java.util.Scanner中,從用戶作爲字符串得到輸入,創建參數化System.in掃描器對象,並指定由所述掃描儀對象調用userChoice nextLine()的值:

Scanner input = new Scanner(System.in); 
String userChoice = input.nextLine(); 

有關您的代碼的幾件事。關係運算符==用於比較原始數據 - 不是對象。使用string1.equals(string2)來查看兩個字符串是否相等。 另外,bob = (int) Math.floor(Math.random()*2);實際上是bob = (int)(Math.random() * 2); ,因爲將double轉換爲整數會將double重新截斷爲小於或等於它的最大整數。

+0

很好,謝謝!還要感謝關於Math.random的一點小技巧。對不起,這個即時通訊用於JavaScript所以你! – 2014-11-07 03:18:34

+0

沒問題,阿什溫。祝你在學習java的旅程中好運。起初有點棘手/笨拙,但變得更容易Lol。 – 2014-11-07 03:23:09

0

在Java中「字符串」數據類型可以容納數字和字符串(正如你所問)。您可以通過如下掃描工具獲取用戶輸入:

Scanner input = new Scanner(); 
userChoice = input.nextLine(); // if it is a string 
//userChoice = input.nextInt(); // if it's integer choice 

如果字符串是一個整數,那麼你也可以解析它來獲得它的整數值。解析:

int value = Integer.parseInt(userChoice); 

也用於比較字符串值,你應該使用「等於」功能,而不是「==」。

if(userChoice.equals("Heads")){...} //rather than if(userChoice == "Heads"){...} 
0

它可能會幫助您獲得創意。

public static void main(String[] args) { 
    Random rd = new Random(); 
    //Enter 1 0R 0 
    int bob = rd.nextInt(2); 
    String userChoice; 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Please enter a number"); 
    userChoice = sc.nextLine(); 
    System.out.println("You entered " + userChoice + " and bob is " + bob); 
    int uc = Integer.parseInt(userChoice); 
    if (uc == bob) { 
     System.out.println("Hehe"); 
    } else { 
     System.out.println("Sorry"); 
    } 
}