java死機
⑴ 我寫了一個java程序,一運行就死機
不僅Chinese_Score類中的死循環,還有(int) (Math.random() * 60) + 40
如果(int) Math.random() * 60+ 40,Math.random()的值[0,1)取整恆為0,你的平均值就永遠為40,所以應:(int) (Math.random() * 60),具體如下:
public class Chinese_Score {
private int[] Chinese;
public Chinese_Score() {
Chinese = new int[20];
int i = 0;
while (i < 20) {
Chinese[i] = (int) (Math.random() * 60) + 40;
i++;
}
}
public int Average_Chinese() {
int total = 0;
for (int i = 0; i < 20; i++) {
total += Chinese[i];
}
return (int) total / 20;
}
}
public class English_Score {
private int[] English;
public English_Score() {
English = new int[20];
int i = 0;
do {
English[i] = (int) (Math.random() * 60) + 40;
} while (++i < 20);
}
public int Average_English() {
int total = 0;
for (int i = 0; i < 20; i++) {
total += English[i];
}
return (int) total / 20;
}
}
public class Math_Score {
private int[] Maths;
public Math_Score() {
Maths = new int[20];
for (int i = 0; i < 20; i++) {
Maths[i] = (int) (Math.random() * 60) + 40;
}
}
public int Average_Maths() {
int total = 0;
for (int i = 0; i < 20; i++) {
total += Maths[i];
}
return (int) total / 20;
}
}
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Math_Score math = new Math_Score();
Chinese_Score chinese = new Chinese_Score();
English_Score english = new English_Score();
System.out.println("Math :" + math.Average_Maths());
System.out.println("Chinese :" + chinese.Average_Chinese());
System.out.println("English :" + english.Average_English());
}
}