这是我在这里的第一篇文章,所以我决定在这里浏览各种帖子,以便尝试了解如何发布问题。
因此,如果我搞砸了请告诉我,以便我可以尽快修改我的帖子。
所以这是我的问题:
我今天开始学习Java,我正在努力了解一切是如何运作的。我将下面的代码设置为判断孩子是好还是坏,并显示相应的重播。
好孩子得到糖果,坏孩子得不到。我希望能够将用户的选择限制为好或坏,并将答案更改为Boolean
到true
或false
以运行正确的if
语句。
我看到Math.random
这样做的方式,但是当我尝试它时,我遇到了更多问题。
感谢您的时间。
以下是我的代码:
import java.util.Scanner;
public class Main {
public static void main (String args[]) {
//take user info
Scanner sc = new Scanner(System.in);
int candy = 12;
int kids = 4;
int bad = 1;
String a = sc.nextLine();
int answer = candy / kids;
String answer2 = "No Candy";
boolean good = false;
System.out.println(a);
//closeing the scanner
sc.close();
if(bad == 1) {
System.out.println(answer2);
} else {
if(bad == 2)
good = true;
System.out.println(answer);
}
if(good == true) {
System.out.println("Good Job");
} else {
System.out.println("Try again tomorrow!");
}
}
}
答案 0 :(得分:0)
看到你刚刚开始,我会尽量保持简单。有很多方法可以强迫你的读者说出比下面更好的“好”或“坏”,但它们需要循环(我认为你还没有接触过)。
请考虑以下事项:
boolean good = false;
if (a.equals("good")) { // they said good
good = true;
} else if (a.equals("bad")) { // they said bad
good = false;
} else { // they said neither
System.out.println("You didn't say a correct word!");
}
您首先指定您拥有boolean good
(您可以按上述方式提供默认值,或者不提供任何内容)。然后,根据用户的输入,您可以将布尔值设置为适当的值。
必须在if语句之上声明boolean good
的原因与变量的范围有关。如果你的书/老师没有解释那是什么,你现在应该查阅。 TL; DR是如果你只是首先在if语句中声明你的变量,那么它会在你离开if语句后立即消失。你可以看到在这种情况下如何完全违背if语句的目的。
答案 1 :(得分:0)
您可以通过将输入封闭在循环中来限制输入。
List<String> accepted = new ArrayList<String>();
accepted.add("good");
accepted.add("bad");
System.out.println("Good or bad?");
String input = sc.nextLine();
while(!accepted.contains(input)) {
System.out.println("Invalid query '" + input + "'. Try again.");
input = sc.nextLine();
}
你拥有的代码,我不确切地知道它正在尝试做什么。它看起来并不实用。所以这适合我,我不是100%肯定。
答案 2 :(得分:0)
首先,没有必要在代码结束前结束扫描仪。你可以把它留下来,没有必要关闭它。 (除非你的IDE强迫你,然后是的,你应该,但最后关闭它以防万一。我有Eclipse,所以我的代码仍然运行没有故障。)
另一个评论是,只是为了美学,你应该将某种字符串连接到answer
的末尾,以便读者理解变量的含义。
还有一件事。我经常发现将扫描仪命名为更直观的东西比如输入更有帮助。毕竟,这就是它的本质。 (我只是对你的代码做了很多评论,因为你刚开始学习东西,所以你应该尽早养成良好的习惯。)
在这种情况下,您可以使用boolean userInput = Boolean.parseBoolean(answer)
将字符串输入转换为布尔值。然后,根据用户使用if语句提供的输入,他们可以控制代码的流程。
import java.util.Scanner;
public class lol {
public static void main (String args[]){
//take user info
Scanner sc = new Scanner(System.in);
int candy = 12;
int kids = 4;
int answer = candy / kids;
String answer2 = "No Candy";
System.out.println("Are youkids good or bad?");
System.out.println("[1] Good = true");
System.out.println("[2] Bad = false");
String a = sc.nextLine();
boolean userInput = Boolean.parseBoolean(a);
if(userInput== false){
System.out.println(answer2);
System.out.println("Try again tomorrow!");
}
else{
System.out.println("Good Job");
System.out.println("You get" +answer+"pieces.");
}
}
}
答案 3 :(得分:0)
package test;
import java.util.Scanner;
public class app {
public static void main (String args[]){
//take user info
Scanner sc = new Scanner(System.in);
String a="?";
while(!a.equals("good") && !a.equals("bad")){
System.out.println("Was the kid good or bad ?");
a = sc.nextLine();
}
boolean wasKidGood = a.equals("good");
String result = (wasKidGood ? "Good kid gets candy" : "No candy for bad kid");
System.out.println(result);
sc.close();
}
}
您好,我写了一些内容,这将有助于您掌握while循环和三元运算符(if循环的替代版本)。您还需要注意允许使用的位置==以及应该使用equals()方法的位置。问候