我在学习基础知识后尝试用Java学习我的第一个项目,所以我为一个完整的初学者问题道歉。我整个下午一直在寻找帮助,我的代码开始变得混乱和破碎。
我正在尝试制作一个滚动多个d10的骰子滚轮,然后继续检查有多少是7或更高,并将它们计算/显示为成功。如果没有一个卷成功,我希望它显示" Botch"。
经过一些研究,我发现创建了一个ArrayList,从那里开始(在我看来)最好的选择。但是我现在已经停留了一段时间,出现了不同的错误和问题,每次我拿下一个,代码变得更加混乱,我的目标似乎更远了。我的好友说"欢迎编程"并建议我问社区。 p>
以下是我与之合作的内容:
import java.util.Scanner;
import java.util.ArrayList;
public class RollDie {
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
String numberOfDice;
// User input for number of dice to roll
System.out.print("How many dice? ");
numberOfDice = userInput.next();
System.out.println("Rolling " + numberOfDice + " dice!");
userInput.close();
Integer roll = 0;
int dice = Integer.parseInt(numberOfDice);
int sides = 10; // # of die sides
ArrayList<Integer> sux = new ArrayList<Integer>(); // Store results of roll
// print result
for(int d=0; d < dice; d++) {
// roll should be 1 through sides
roll = (int) (Math.random() * sides) + 1;
sux.add(roll);
}
System.out.println(sux);
// Count successes and print or check for botch
for(int s = 0; s < sux.size(); s++){
if(sux.get(roll) >= 7) {
s++;
System.out.println(s + " successes!");
} else {
System.out.println("BOTCH!");
break;
}
}
}
}
打印sux ArrayList后的所有内容都是一团糟。我知道for循环是错误的,我只是不知道如何使它正确。变量s似乎不合适......任何帮助都会受到赞赏,如果这篇文章反对社区的标准,请告诉我。谢谢!
编辑:为了澄清我的乱码,我的问题是:如何检查滚动后添加到ArrayList的数字是否大于或等于7(或任何数字)?
答案 0 :(得分:1)
作为早先的#Aomine建议,您需要一个标志,帮助您查找是否有任何骰子是> = 7或没有骰子达到此条件。
// Count successes and print or check for botch
boolean isBotch=false;
for(int s = 0; s < sux.size(); s++){
if(sux.get(s) >= 7) {
//s++; //no need to use this counter here again
System.out.println((s+1) + " successes!"); // s+1 gives you right location
} else {
isBotch = true; //flag variable
}
}
if(!isBotch){
System.out.println("BOTCH!");
}
答案 1 :(得分:0)
更新
public static boolean checkTradeTimeFmt(String trade_time){
if (trade_time == null)
return false;
//set the format to use as a constructor argument
SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm:ss.sss");
if (trade_time.trim().length() != dateFormat.toPattern().length())
return false;
dateFormat.setLenient(false);
try {
//parse the trade_time parameter
dateFormat.parse(trade_time.trim());
}
catch (ParseException pe) {
return false;
}
return true;
}
应该是
for(int s = 0; s < sux.size(); s++){
if(sux.get(roll) >= 7) { //here value of sux.get(roll) will be regardless to s. should be typo.
s++;// no need to change value of s, as it will be changed during for clause.
System.out.println(s + " successes!");
break;
} else {
System.out.println("BOTCH!");
}
答案 2 :(得分:0)
这个怎么样?
Error: Error #2078: The name property of a Timeline-placed object cannot be modified.
at flash.display::DisplayObject/set name()
at item_Potion()[E:\g\item_Potion.as:33]
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at mc_Map()[E:\g\mc_Map.as:15]
at Game()[E:\g\Game.as:82]