需要一些帮助才能添加到我创建的名为FTGames的第一个数组中。当我运行它时,它显示括号中的数字。例如。我从1开始它显示游戏[1]。对于游戏2,它显示Game [1,1],依此类推。我似乎无法弄清楚#1如何摆脱显示器上的[]或打印输出。 #2如何让它添加增加而不是将其列为单独的int。我已经标出了有问题的区域。我确定这是一个我忽略的简单修复。
import java.util.*;
public class Final {
public static void main(String[] args) {
// create # of games played array
List<Integer> FTGames = new ArrayList<Integer>();
FTGames.add(1);
// create # of shots made array
List<Integer> ShotsMade = new ArrayList<Integer>();
System.out.print("Enter Player's Free Throw Percentage: ");
// Create scanner for user percentage input
Scanner input = new Scanner(System.in);
int percent = input.nextInt();
// FTGames shows [] in this run
System.out.println("Game" + FTGames + ":");
Random r = new Random();
FTGames.add(1); // Adds 1 to FTGames
for (int i = 0; i < 10; ++i){
boolean in = tryFreeThrow(percent);
if (in) {
ShotsMade.add(1);
System.out.print("In" + " ");
}
else {
ShotsMade.add(0);
System.out.print("Out" + " ");
}
}
// FTGames shows [1] in this run
System.out.println("");
System.out.println("Game" + FTGames + ":");
FTGames.add(1); //Adds 1 to FTGames to make this Game 2 ** But is not showing that **
for (int i = 0; i < 10; ++i){
boolean in = tryFreeThrow(percent);
if (in) {
ShotsMade.add(1);
System.out.print("In" + " ");
}
else {
ShotsMade.add(0);
System.out.print("Out" + " ");
}
}
// FTGames shows [1,1}
System.out.println("");
System.out.println("Game" + FTGames + ":");
FTGames.add(1);
for (int i = 0; i < 10; ++i){
boolean in = tryFreeThrow(percent);
if (in) {
ShotsMade.add(1);
System.out.print("In" + " ");
}
else {
ShotsMade.add(0);
System.out.print("Out" + " ");
}
}
}
public static boolean tryFreeThrow(int percent) {
Random r = new Random();
int number = r.nextInt(100);
if (number > percent){
return false;
}
return true;
}
}
答案 0 :(得分:0)
另一方面,在java中用大写字母命名变量并不是真的(例如FTGames和ShotsMade,通常的约定是lowerCamelCase,类型应该是UpperCamelCase)
您的FTGames变量是一个列表。当您对列表进行处理时,它会以[]和逗号分隔的方式显示列表内容,因此当您看到
时[1,1]
这是您的列表FTGames
,其中包含2个元素。当您调用FTGames.add(1)时,这意味着将另一个整数添加到列表中,其值为1
据推测,您不想添加价值为1
的新游戏,而是想再运行游戏的另一次迭代?
所以你做错了是期望.add()
执行某种整数加法,当它实际上它添加另一个元素到列表时。考虑一下这个特定问题所使用的正确类型
我不打算为你做功课,但是像你现在使用的2个名单是不正确的。
答案 1 :(得分:0)
我不认为你理解.add()
的作用。
调用.add()
会向列表中添加元素。因此,如果您有一个名为myList
的列表,并且您致电myList.add(1)
,则该列表将变为[1]
。然后当你myList.add(2)
执行它时,它不进行算术运算,它会将新元素添加到列表的末尾,列表变为[1, 2]
。
如果我理解你的问题你想要做的事情是这样的:做myList.add(1)
应该给你列表为[1]
但是添加1应该改变那个元素,就像做算术一样在它上面,结果是[2]
。在这种情况下,你会做的是这样的事情:
myList.set(0, 1+1); // just an example to clarify, you want to avoid having random numbers and arithmetic without any explanation
此示例中的set()
方法采用0
,它是元素的索引,第二个参数是Integer
,在这种情况下是1+1
,导致2
。当你打印出来时,你会得到`[2]。
要摆脱[]
,而不是做
System.out.println(myList);
做的:
System.out.println(myList.get(0));
这将只为您提供列表的第一个元素。看到你只是改变了列表的第一个元素,这应该足够了(格式化和你认为合适的未添加的内容)。
最后,我会强烈建议您查看文档,因为如果没有文档,您将无法学到所有这些。
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
<强>更新强>
如果您实际实现了我建议的代码,那么main()
方法会是什么样子:
public static void main(String[] args) {
// create # of games played array
List<Integer> FTGames = new ArrayList<Integer>();
FTGames.add(1);
// create # of shots made array
List<Integer> ShotsMade = new ArrayList<Integer>();
System.out.print("Enter Player's Free Throw Percentage: ");
// Create scanner for user percentage input
Scanner input = new Scanner(System.in);
int percent = input.nextInt();
// FTGames shows [] in this run
System.out.println("Game " + FTGames.get(0) + ":");
Random r = new Random();
FTGames.set(0, FTGames.get(0)+1); // Adds 1 to FTGames
for (int i = 0; i < 10; ++i){
boolean in = tryFreeThrow(percent);
if (in) {
ShotsMade.add(1);
System.out.print("In" + " ");
}
else {
ShotsMade.add(0);
System.out.print("Out" + " ");
}
}
// FTGames shows [1] in this run
System.out.println("");
System.out.println("Game " + FTGames.get(0) + ":");
FTGames.set(0, FTGames.get(0)+1); //Adds 1 to FTGames to make this Game 2 ** But is not showing that **
for (int i = 0; i < 10; ++i){
boolean in = tryFreeThrow(percent);
if (in) {
ShotsMade.add(1);
System.out.print("In" + " ");
}
else {
ShotsMade.add(0);
System.out.print("Out" + " ");
}
}
// FTGames shows [1,1}
System.out.println("");
System.out.println("Game " + FTGames.get(0) + ":");
FTGames.set(0, FTGames.get(0)+1);
for (int i = 0; i < 10; ++i){
boolean in = tryFreeThrow(percent);
if (in) {
ShotsMade.add(1);
System.out.print("In" + " ");
}
else {
ShotsMade.add(0);
System.out.print("Out" + " ");
}
}
}
我再次建议阅读文档并实际了解代码的作用。为此,如果您对我在代码中更改的任何内容感到困惑,请在此问我。我很乐意向你解释。
更新2
我已经解释了所有这些,所以你会理解你在add()
做错了什么,以及如果你需要,你可以如何对列表中的元素执行算术运算(或更改值)。但是,为了这个目的,我建议一个简单的计数器。简单的事情:
int myGameCounter = 1;
以后,只要你想通过添加1来代表更多游戏,你就可以:
myGameCounter++;