首页 / JAVA / Java中的循环和条件
Java中的循环和条件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中的循环和条件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4968字,纯文字阅读大概需要8分钟。
内容图文
编辑.问题的字符串比较部分已经解决了,但是当在2个骰子中只滚动一个1时,代码仍然没有进入下一个玩家,只有当两个骰子都是1时才进入下一个玩家.
这是到目前为止的代码,第一个类几乎来自教科书,第二个类使用main方法就是我所做的.
该计划正在尝试创建一个名为pig的骰子游戏.如果感兴趣,简单的规则是代码的底部,但主要问题.
我有的是它没有正确循环,当我没有把y放在扫描仪中再次发出信号滚动它就像我输入y一样继续,当我没有.此外,if语句不能正常工作,因为当玩家使用其中一个骰子滚动1时,它不会进入下一个玩家.
对不起,如果我没有正确解释问题.另外,我不想再使用任何方法或类.我假设有更快的方法来实现这一点,而不是我正在做的方式,但如果我想在我的代码中使用额外的方法,那将在以后使用.我也有计算积分的问题,因为有时它并没有适当地改变它们,但是一旦其余部分正常工作我就能弄明白.
这是第一段代码.这段代码对问题并不重要,但是如果你想知道我在main中调用哪些方法,你可以看看这些:
import java.util.Random;
public class PairOfDice {
private final int MAX = 6;
private int faceValue;
private int faceValue1;
Random generator0 = new Random();
Random generator1 = new Random();
public PairOfDice(){
faceValue = 1;
faceValue1 = 1;
}
public int getFaceValue() {
return faceValue;
}
public void setFaceValue(int faceValue) {
this.faceValue = faceValue;
}
public int getFaceValue1() {
return faceValue1;
}
public void setFaceValue1(int faceValue1) {
this.faceValue1 = faceValue1;
}
public int rollOne() {
faceValue = generator0.nextInt(MAX) + 1;
return faceValue;
}
public int rollTwo() {
faceValue1 = generator1.nextInt(MAX) + 1;
return faceValue1;
}
public int sumOfRoll() {
return faceValue + faceValue1;
}
@Override
public String toString() {
return "First roll of the die: \t" + rollOne()
+ "\nSecond roll of the die: " + rollTwo()
+ "\nThe sum of both rolls: \t" + sumOfRoll();
}
}
下一段代码是我自己的.我已经更新了代码中的一些内容,现在使用.equals比较字符串时我更改了while条件并简化了if语句.
public class NewClass {
public static void main(String[] args) {
PairOfDice player1 = new PairOfDice();
PairOfDice player2 = new PairOfDice();
Scanner scan = new Scanner(System.in);
int p1 = 33, p2 = 0, turnp1 = 0, turnp2 = 0, signal = 1;
while (p1 <= 100 || p2 >= 100) {
int newp1total = p1;
turnp1 = 0;
while (turnp1 <= 20 && signal == 1) {
System.out.println("Player 1s Turn!");
int die1 = player1.rollOne();
int die2 = player1.rollTwo();
int sumofdice = player1.sumOfRoll();
System.out.println("Player 1: First Die: " + die1 + " Second Die:" + die2 + " Sum of Roll: " + sumofdice);
if (sumofdice == 2) {
p1 = 0;
turnp1 = 0;
signal = -1;
System.out.println("Player rolled a two 1s. All players points are forfeited. Next Players turn.");
System.out.println("Points this turn:" + turnp1);
System.out.println("Points this game: " + p1);
System.out.println();
} else if (die1 == 1 || die2 == 1) {
turnp1 = 0;
signal = -1;
p1 = newp1total;
System.out.println("Player rolled a 1. All points on this round are forfeited. Next Players turn.");
System.out.println("Points this turn:" + turnp1);
System.out.println("Points this game: " + p1);
System.out.println();
} else {
turnp1 += sumofdice;
p1 += sumofdice;
System.out.println("Points this turn:" + turnp1);
System.out.println("Points this game: " + p1);
System.out.println();
signal = 1;
}
}
signal = 1;
String yesno = "y";
int newp2total = p2;
while (yesno.toLowerCase().equals("y") && signal == 1) {
System.out.println("Player 2s Turn!");
int die1 = player2.rollOne();
int die2 = player2.rollTwo();
int sumofdice = player2.sumOfRoll();
System.out.println("Player 2: First Die: " + die1 + " Second Die:" + die2 + " Sum of Roll: " + sumofdice);
if (sumofdice == 2) {
p2 = 0;
turnp2 = 0;
signal = -1;
System.out.println("Player rolled a two 1s. All players points are forfeited. Next Players turn.");
System.out.println("Points this turn:" + turnp2);
System.out.println("Points this game: " + p2);
System.out.println();
} else if (die1 == 1 || die2 == 1) {
signal = -1;
turnp2 = 0;
p2 = newp2total;
System.out.println("Player rolled a 1. All points on this round are forfeited. Next Players turn.");
System.out.println("Points this turn:" + turnp2);
System.out.println("Points this game: " + p2);
System.out.println();
} else {
turnp2 += sumofdice;
p2 += sumofdice;
System.out.println("Points this turn:" + turnp2);
System.out.println("Points this game: " + p2);
System.out.println();
System.out.println("Try your luck? Y/N");
yesno = scan.next();
System.out.println();
signal = 1;
}
}
}
}
}
解决方法:
第一件事是第一件事,这是一个重要的概念,当比较字符串总是使用.equals,而不是==.例如
yesno.toLowerCase() == "y" && signal == 1
应该
yesno.toLowerCase().equals("y") && signal.equals 1
这是因为y是一个字符串.如果y是int,那么你会使用==.如果您正在比较y并且您不断更改值,那么您将使用=.下一件事;我知道使用getter和setter可能是教科书作业的一部分,但除非是;不要使用它们.
阅读本article.
它使代码很难遵循.在你的代码中,其他明智的工作,我喜欢你尊重java代码约定!
另外,确保对字符串使用.equals,对于整数使用==.如果你要比较整数,我相信你是int变量,你需要使用==.另外,我认为你可能会对概念感到困惑.如果您有if语句并且正在比较事物并且需要BOTH语句为真,请使用“&&”如果你只需要一个陈述是真的,那就用|| (此键是带有班次的输入上方的键)
内容总结
以上是互联网集市为您收集整理的Java中的循环和条件全部内容,希望文章能够帮你解决Java中的循环和条件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。