Main:
public class Main {
private static String [] Countries={"UK", "Italy",
"Germany", "Thailand","Denmark","Japan","Spain","Argentina"};
static double average[] = new double[8];
double[] results = new double[8];
public static String getWinner(ArrayList<MissUniverse>alist){
int winner = 0;
for (int s = 0; s < alist.size(); s++){
if (alist.get(s).average() > alist.get(0).average() ) {
winner= s;
}
}
return alist.get(winner).getCountry();
}
public static String firstRunnerUp(ArrayList<MissUniverse>alist){
int firstrunnerUp =0;
for (int s = 0; s < alist.size(); s++){
if (alist.get(s).average() > alist.get(0).average() && alist.get(s).getCountry() != getWinner(alist) ) {
firstrunnerUp = s;
}
}
return alist.get(firstrunnerUp).getCountry();
}
public static void main (String[] args){
ArrayList<MissUniverse> alist = new ArrayList<MissUniverse>();
MissUniverse missUniverse[] = new MissUniverse[Countries.length];
for(int i=0;i<Countries.length;i++)
{
missUniverse[i] = new MissUniverse(Countries[i]);
missUniverse[i].getScore();
alist.add(missUniverse[i]);
}
System.out.printf("%-15s%-5s%-5s%-5s%-5s%-5s%-5s%-5s%-5s%-10s",
"Countries","1","2","3","4","5","6","7","8","Average");
System.out.println();
for (int i = 0; i < Countries.length; i++){
System.out.printf("%-13s",Countries[i]);
missUniverse[i].printInfo();
System.out.printf("%5.1f", alist.get(i).average() );
System.out.println();
}
System.out.println("The result is");
System.out.println("Winner: Miss " + getWinner(alist) );
System.out.println("1st Runner Up: Miss " + firstRunnerUp(alist) );
}
}
MissUniverse:
class MissUniverse {
public static int SIZE=8;
private String country;
private double[] score;
public MissUniverse(String country){
this.country = country;
score = new double [SIZE];
}
public String getCountry(){
return country;
}
public void getScore(){
for (int i=0;i<score.length;i++)
{
score[i] = Math.random()*10;
}
}
public void setCountry(String newCountry) {
this.country = newCountry;
}
private int highest(){
int i;
double highest;
highest = score[0];
for (i = 0; i <score.length; i++)
{
if (highest < score [i])
{
highest = score[i] ;
}
}
return i;
}
private int lowest(){
int i;
double lowest;
lowest = score[0];
for (i = 0; i <score.length; i++)
{
if (lowest > score [i])
{
lowest = score[i];
}
}
return i;
}
public double average(){
double sum = 0.0;
for (int i = 0; i < score.length; i++){
sum += score[i];
}
double average;
average = (sum - score[lowest()-1] - score[highest()-1] )/ (score.length - 2);
return average;
}
public void printInfo(){
for(int i=0;i< score.length;i++){
System.out.printf("%-5.1f",score[i]);
}
}
}
Почему вывод неверен?
вывод 1:
Countries 1 2 3 4 5 6 7 8 Average
UK 2.0 0.5 3.7 2.0 5.2 7.0 9.2 5.8 4.0
Italy 3.9 3.8 2.4 5.1 5.7 1.0 6.7 6.9 3.6
Germany 7.0 0.5 8.4 2.4 6.3 4.4 8.8 7.1 5.1
Thailand 6.9 8.7 3.9 4.7 4.9 3.5 4.7 9.4 4.7
Denmark 0.5 0.9 3.4 3.3 6.3 10.0 7.0 6.6 4.1
Japan 4.2 2.1 5.9 9.4 9.8 2.3 4.2 9.7 4.7
Spain 6.5 4.0 6.5 3.6 8.5 8.5 9.2 9.4 6.2
Argentina 0.4 6.6 6.5 2.3 2.6 4.5 5.6 3.7 4.1
The result is
Winner: Miss Argentina
1st Runner Up: Miss Spain
его Предполагаемый победитель: мисс испания, занявший второе место: мисс германия. но разве logi c в getWinner (alist) и firstrunnerup (alist) правильно?
вывод 2:
Countries 1 2 3 4 5 6 7 8 Average
UK 0.5 9.2 2.8 1.3 7.0 9.6 6.9 6.9 5.1
Italy 4.3 7.6 2.3 3.3 8.6 9.3 7.0 3.1 6.5
Germany 2.2 0.4 6.1 4.4 5.8 3.1 5.5 9.1 3.1
Thailand 1.7 7.1 6.2 9.5 7.9 4.9 0.8 8.3 5.0
Denmark 1.6 1.6 2.5 6.5 8.8 5.8 3.7 1.2 4.9
Japan 7.4 1.5 5.6 1.6 3.1 5.8 3.2 3.4 4.1
Spain 0.2 0.9 0.3 7.2 1.5 7.8 7.3 8.6 2.7
Argentina 9.1 8.9 0.3 5.1 2.6 8.8 4.3 5.1 5.7
The result is
Winner: Miss Argentina
1st Runner Up: Miss Italy
это должно быть: победитель: италия, занявшая второе место: аргентина
может ли кто-нибудь указать мне в правильном направлении? Я думаю, что ошибка должна быть в методах getwinner и firstrunnerup, но я не могу определить ошибку.