我是Java的初学者,我阻止了我的calculatePoints()方法。
因此,用户输入5名球员,并输入进球数:
插图
谁的进球最多,谁的积分就更多。
来计算点数。
最好的球员将得到10分,
第二个8分,第三个6分,
第四个4分,第五个2分。
我不明白怎么才能把这个算进我方法里? 在我下面的图像中,我的点数是0。
在此处输入图像说明
public static void calculatePoints(String[] arrayPlayer, int[] arrayGoal, int[] arrayPoints){
int pts = 10;
for(int i=0; i<arrayPlayer.length; i++){
if(pts > 0){
pts = pts - 2;
}
}
}
下面是我的代码:
import java.util.*;
class Main {
public static void main(String[] args) {
String[] arrayPlayer = new String[5];
int[] arrayGoal = new int[5];
int[] arrayPoints = new int[5];
encoding_Goal(arrayPlayer, arrayGoal);
sortBublle(arrayGoal, arrayPlayer);
displaying(arrayPlayer, arrayGoal, arrayPoints);
}
public static void encoding_Goal(String[] arrayPlayer, int[] arrayGoal){
Scanner input = new Scanner(System.in);
int iPlayer = 0;
int iGoal = 0;
for(int i=0; i<arrayPlayer.length; i++){
System.out.print("Input Player " + (i+1) + " : ");
String Player = input.next();
arrayPlayer[iPlayer++] = Player;
System.out.print("Input the number of goals for the Player " + arrayPlayer[i] + " : ");
int Goal = input.nextInt();
arrayGoal[iGoal++] = Goal;
}
}
public static void sortBublle(int[] arrayGoal, String[] arrayPlayer){
int size = arrayGoal.length;
int tempo = 0;
String tempName = "";
for(int i=0; i<size; i++){
for(int j=1; j < (size - i) ; j++){
if(arrayGoal[j-1] > arrayGoal[j]){
tempo = arrayGoal[j-1];
arrayGoal[j-1] = arrayGoal[j];
arrayGoal[j] = tempo;
tempName = arrayPlayer[j-1];
arrayPlayer[j-1] = arrayPlayer[j];
arrayPlayer[j] = tempName;
}
}
}
}
public static void calculatePoints(String[] arrayPlayer, int[] arrayGoal, int[] arrayPoints){
int pts = 10;
for(int i=0; i<arrayPlayer.length; i++){
if(pts > 0){
pts = pts - 2;
}
}
}
public static void displaying(String[] arrayPlayer, int[] arrayGoal, int[] arrayPoints){
for(int i=0; i<arrayPlayer.length; i++){
System.out.println("Player " + arrayPlayer[i] + " | Number of goals " + arrayGoal[i] + " | Point(s)" + arrayPoints[i]);
}
}
}
你编码的冒泡排序按球员进球的升序对他们进行排序。 所以arrayPlayer列表中的第一个球员是进球最少的球员。 他必须得2分,所以对手必须从2分开始。 每下一个玩家,点数增加2。 所以解决您问题的代码如下:
int pts = 2;
for (int i = 0; i < arrayPlayer.length; i++) {
arrayPoints[i] = pts;
if (pts < 10) {
pts = pts + 2;
}
}
你需要自己尝试这些类型的问题,这将帮助你学习并在你的头脑中建立逻辑:
请检查解决方案,这不是一个优化的,但工作为您的任务。
第一个调用:CalculatePoints(arrayPlayer,arrayGoal,arrayPoints);
encoding_Goal(arrayPlayer, arrayGoal);
sortBublle(arrayGoal, arrayPlayer);
calculatePoints(arrayPlayer, arrayGoal, arrayPoints);
displaying(arrayPlayer, arrayGoal, arrayPoints);
然后将计算点(arrayPlayer,arrayGoal,arrayPoints);
修改为
public static void calculatePoints(String[] arrayPlayer, int[] arrayGoal, int[] arrayPoints){
for(int i=0; i<arrayPlayer.length; i++){
arrayPoints[i] = (i+1)*2;
}
}
之后,你就会得到解决方案。 请在线查看代码。