只是想弄清楚如何打印出来看起来像这样:
The total team points is 2232.00
The two point percent is 41.13
The three point percent is 32.06
The foul shot percent is 66.86
而不是我现在拥有的东西,它不断地通过循环并通过团队单独打印而不是将它们全部加在一起。像这样:
The total team points is: 516.0
The two point percent is: 0.46783626
The three point percent is: 0.26865673
The foul shot percent is: 0.625
The total team points is: 590.0
The two point percent is: 0.38135594
The three point percent is: 0.3037037
The foul shot percent is: 0.7579618
The total team points is: 408.0
The two point percent is: 0.43459916
etc...
这是代码:
for (int i = 0; i < team.size(); i++) {
float points = (float) (2 * (team.get(i).getmade1() + team.get(i).getmade2() + team.get(i).getmade3()));
float twopercent = (float) (team.get(i).gettwoPercent());
float threepercent = (float) (team.get(i).getthreePercent());
float foulpercent = (float) (team.get(i).getfoulPercent());
System.out.println("The total team points is: " + points);
System.out.println("The two point percent is: " + twopercent);
System.out.println("The three point percent is: " + threepercent);
System.out.println("The foul shot percent is: " + foulpercent);
}
outputStream.println(team);
我的其余工作可供参考:
public class fileStreamtest {
public static void main(String[] args) {
Scanner inputStream = null;
PrintWriter outputStream = null;
ArrayList<BBall> team = new ArrayList<BBall>();
try {
inputStream = new Scanner(new FileInputStream("/Users/Gracie/Documents/workspace/Lab7/src/team.txt"));
outputStream = new PrintWriter(
new FileOutputStream("/Users/Gracie/Documents/workspace/Lab7/src/team_stat.txt"));
} catch (FileNotFoundException e) {
System.out.println("Problem opening files" + e.toString());
System.exit(0);
}
// Here you declare and initialize the varibales you need in loop
int num;
String fname;
String lname;
int twoMade;
int twoAttempt;
int threeMade;
int threeAttempt;
int foulMade;
int foulAttempt;
while (inputStream.hasNextLine()) {
// read variable by variable across the line
num = inputStream.nextInt();
lname = inputStream.next();
fname = inputStream.next();
twoMade = inputStream.nextInt();
twoAttempt = inputStream.nextInt();
threeMade = inputStream.nextInt();
threeAttempt = inputStream.nextInt();
foulMade = inputStream.nextInt();
foulAttempt = inputStream.nextInt();
// then use all these variables to make a BBallPlayer and add to the arraylist
BBall player = new BBall(num, fname, lname, twoMade, twoAttempt, threeMade, threeAttempt, foulMade,
foulAttempt);
team.add(player);
}
// keep reading a line until there is no more input
// using a loop go through the arraylist and get the team totals OF THE NUMBER
// OF POINTS
// prints out totals et
for (int i = 0; i < team.size(); i++) {
float points = (float) (2 * (team.get(i).getmade1() + team.get(i).getmade2() + team.get(i).getmade3()));
float twopercent = (float) (team.get(i).gettwoPercent());
float threepercent = (float) (team.get(i).getthreePercent());
float foulpercent = (float) (team.get(i).getfoulPercent());
System.out.println("The total team points is: " + points);
System.out.println("The two point percent is: " + twopercent);
System.out.println("The three point percent is: " + threepercent);
System.out.println("The foul shot percent is: " + foulpercent);
}
outputStream.println(team);
inputStream.close();
outputStream.close();
}// end method
}// end class
和另一个班级
public class BBall {
private int number;
private String lastName;
private String firstName;
private int made2;
private int att2;
private int made3;
private int att3;
private int made1;
private int att1;
public BBall(int n, String lN, String fN, int m2, int a2, int m3, int a3, int m1, int a1) {
number = n;
lastName = lN;
firstName = fN;
made2 = m2;
att2 = a2;
made3 = m3;
att3 = a3;
made1 = m1;
att1 = a1;
}
public int getnumber() {
return number;
}
public String getlastName() {
return lastName;
}
public String getfirstName() {
return firstName;
}
public int getmade2() {
return made2;
}
public int getatt2() {
return att2;
}
public int getmade3() {
return made3;
}
public int getatt3() {
return att3;
}
public int getmade1() {
return made1;
}
public int getatt1() {
return att1;
}
public void setnumber(int n) {
number = n;
}
public void setlastName(String lN) {
lastName = lN;
}
public void setfirstName(String fN) {
firstName = fN;
}
public void setmade2(int m2) {
made2 = m2;
}
public void setatt2(int a2) {
att2 = a2;
}
public void setmade3(int m3) {
made3 = m3;
}
public void setatt3(int a3) {
att3 = a3;
}
public void setmade1(int m1) {
made1 = m1;
}
public void setatt1(int a1) {
att1 = a1;
}
public float gettwoPercent() {
float twoPercent = (float) made2 / (float) att2;
return twoPercent;
}
public float getthreePercent() {
float threePercent = (float) made3 / (float) att3;
return threePercent;
}
public float getfoulPercent() {
float foulPercent = (float) made1 / (float) att1;
return foulPercent;
}
public String toString() {
return " " + firstName + " " + lastName + " \n Two point percent: " + gettwoPercent()
+ " \n Three point percent: " + getthreePercent() + "\n Foul shot percent: " + getfoulPercent();
}
}// end class
文本文件:
25 DEMERY James 160 342 18 67 80 128
1 NEWKIRK Shavar 135 354 41 135 119 157
33 FUNK Taylor 103 237 70 173 31 37
0 KIMBLE Lamarr 4 11 2 4 0 1
15 CLOVER Chris 81 207 26 80 22 43
24 OLIVA Pierfrancesc 56 121 12 45 31 64
5 ROBINSON Nick 46 115 6 31 42 55
12 LONGPRE Anthony 34 111 18 56 10 16
22 EDWARDS Lorenzo 10 39 7 32 4 5
10 BLOUNT Gerald 2 2 0 0 0 0
32 WILLIAMS Jai 5 10 0 0 3 5
23 LODGE Markell 5 6 0 0 1 3
3 BOOTH Michael 1 2 1 2 0 0
21 THOMPSON Kyle 0 1 0 0 2 2
11 FREEMAN Toliver 0 2 0 2 0 0
13 VEGA Christian 0 1 0 0 0 0
您应该在打印结果之前计算总和:
float points = 0 ;
float twopercent = 0 ;
float threepercent = 0 ;
float foulpercent = 0 ;
for (int i = 0; i<team.size(); i++){
points = points + (float) (2 * (team.get(i).getmade1() + team.get(i).getmade2() + team.get(i).getmade3()));
twopercent = twopercent + (float) (team.get(i).gettwoPercent());
threepercent = threepercent + (float) (team.get(i).getthreePercent());
foulpercent = foulpercent + (float) (team.get(i).getfoulPercent());
}
System.out.println("The total team points is: " + points );
System.out.println("The two point percent is: " + twopercent);
System.out.println("The three point percent is: " + threepercent);
System.out.println("The foul shot percent is: " + foulpercent);
虽然Azzabi Haythem的答案是正确的,但计算本身并非如此。
我先得到所有队伍的所有积分,然后计算百分比。
float points = 0 ;
// foul
int made1 = 0 ;
int att1 = 0;
// two points
int made2 = 0 ;
int att2 = 0;
// three points
int made3 = 0 ;
int att3 = 0;
for (int i = 0; i<team.size(); i++){
points = points + (float) (2 * (team.get(i).getmade1() + team.get(i).getmade2() + team.get(i).getmade3()));
// foul
made1 = made1 + team.get(i).getmade1(i);
att1 = att1 + team.get(i).getAtt1(i);
// two points
made2 = made2 + team.get(i).getmade2(i);
att2 = att2 + team.get(i).getAtt2(i);
// three points
made3 = made3 + team.get(i).getmade3(i);
att3 = att3 + team.get(i).getAtt3(i);
}
float foulPercent = (float) made1 / (float) att1;
float twoPercent = (float) made2 / (float) att2;
float threePercent = (float) made3 / (float) att3;
System.out.println("The total team points is: " + points );
System.out.println("The two point percent is: " + twoPercent);
System.out.println("The three point percent is: " + threePercent);
System.out.println("The foul shot percent is: " + foulPercent);