所以我刚开始学习Java,它就像我的第一天一样,我想尝试制作一个coinflip游戏。我已经知道了相当数量的Javascript,所以我试图将这些知识应用于java。所以到目前为止一切都在工作,除了一件事:提示用户做出选择。因此,在线阅读我必须导入扫描仪所以我这样做,你可以从我的代码中看到。我也尝试了一些代码,你可以让用户导入一个字符串但你可以在我的程序稍后看到我将变量userChoice更改为一个数字。所以基本上我只需要帮助。如果有某种方法可以存储一个可以存储最佳数字或字符串的变量类型。但我完全接受其他方式这样做!提前致谢!这是代码:
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 :(得分:1)
使用扫描仪,正如您所说:
Scanner in = new Scanner(System.in);
然后,提示用户输入以下内容:
String userChoice = in.nextLine();
另外,当你比较字符串时:
if(userChoice == "Heads") {...
对于非原始对象,这是不好的。最好只使用==
来比较int
或enum
s的值。如果你比较像这样的字符串,它就不会工作,因为它检查对象是否相同。相反,比较如下:
if(userChoice.equals("Heads")) {...
另外,要转换为int(注意:你不能将一种类型的对象转换为另一种不以任何方式相关的对象!如果你&你必须创建一个新对象#39;想要这样做),做到这一点:
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
}
}
答案 1 :(得分:0)
您已经导入了Scanner类,因此您现在可以创建一个Scanner类型的变量来获取输入。
Scanner in = new Scanner();
userChoice = in.nextLine();
nextLine()
可用于输入用户的字符或字符串。
要将字符串转换为整数,可以按以下方式将整数值分配给字符串。
if(userChoice == "Heads") {
userChoice = "" + 0;
}
else {
userChoice = "" + 1;
}
答案 2 :(得分:0)
导入java.util.Scanner后,要以String形式获取用户输入,请创建一个Scanner对象,该对象参数化System.in并为userChoice分配Scanner对象调用的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截断为小于或等于它的最大整数。
答案 3 :(得分: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);
另外,为了比较字符串值,你应该使用" equals"功能而不是" =="。
if(userChoice.equals("Heads")){...} //rather than if(userChoice == "Heads"){...}
答案 4 :(得分: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");
}
}