提问者:小点点

计算点数的方法


我是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]);
    }

  }
 
 
}

共2个答案

匿名用户

你编码的冒泡排序按球员进球的升序对他们进行排序。 所以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;
      }
  }

之后,你就会得到解决方案。 请在线查看代码。