检查存储在ArrayList中的值是否大于数字

时间:2017-05-18 01:51:19

标签: java arraylist dice

我在学习基础知识后尝试用Java学习我的第一个项目,所以我为一个完整的初学者问题道歉。我整个下午一直在寻找帮助,我的代码开始变得混乱和破碎。

我正在尝试制作一个滚动多个d10的骰子滚轮,然后继续检查有多少是7或更高,并将它们计算/显示为成功。如果没有一个卷成功,我希望它显示" Botch"。

经过一些研究,我发现创建了一个ArrayList,从那里开始(在我看来)最好的选择。但是我现在已经停留了一段时间,出现了不同的错误和问题,每次我拿下一个,代码变得更加混乱,我的目标似乎更远了。我的好友说"欢迎编程"并建议我问社区。

以下是我与之合作的内容:

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(或任何数字)?

3 个答案:

答案 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]