我正在计算机科学课上进行高尔夫模拟,我似乎无法完成以下代码:
import javax.swing.*;
int [][] golf = new int[4][9];
void setup()
{
JOptionPane.showMessageDialog(null, "Welcome to Golf Simulator" + '\n');
int input = 0;
do {
String in = JOptionPane.showInputDialog("1. See the final results table" + '\n' +
"2. Enter the golf scores for Player 1 " + '\n' + "3. Enter the golf scores for Player 2" +
'\n' + "4. Enter the golf scores for Player 3" + '\n' + "5. Enter the golf scores for Player 4" +
'\n' + "6. Results for holes" + '\n' + "7. Exit program", null);
input = Integer.parseInt(in);
char c = in.charAt(0);
switch(c) {
case '1':
showgolf();
break;
case '2':
for (int i = 0; i < golf.length; i++)
{
String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 1", null);
int n = Integer.parseInt(inn);
golf[i] = n;
}
break;
case '3':
for (int i = 0; i < golf.length; i++)
{
String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 2", null);
int n = Integer.parseInt(inn);
golf[i] = n;
}
break;
case '4':
for (int i = 0; i < golf.length; i++)
{
String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 3", null);
int n = Integer.parseInt(inn);
golf[i] = n;
}
break;
case '5':
for (int i = 0; i < golf.length; i++)
{
String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 4", null);
int n = Integer.parseInt(inn);
golf[i] = n;
}
break;
case '6':
for (int i = 0; i < golf.length; i++)
{
String inn = JOptionPane.showInputDialog("Please enter the hole number", null);
int n = Interger.parseInt(inn);
golf[i] = n;
}
break;
default:
JOtionPane.showMessageDialog("Thank you for using Golf Simulator");
break;
}
}while(input != 7);
}
void showgin()
{
String str = "";
for(int i = 0; i < golf.length; i++)
{
str = str + win[i] + '\n';
}
JOptionPane.showMessageDialog(null, str);
}
正如我所提到的,我是初学者,所以我可能在这方面犯了无数错误。我应该使用2D阵列,以便拥有4个不同的9洞球员。在这个模拟器上,需要有一个弹出窗口显示:
感谢您的帮助:)
答案 0 :(得分:0)
如果你有一个2-dim数组golf[4][9]
,golf.length
将返回4
。这是因为你基本上有一个数组长度为4的数组,长度为9.所以golf[0].length
会给你9
所以你的案例2 - 5应该是这样的:
for (int i = 0; i < golf[0].length; i++) {
String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 1", null);
int n = Integer.parseInt(inn);
golf[0][i] = n; // use 0 for player 1, 1 for player 2, ...
}
break;
我认为应该被称为showgin
的{p> showWin
必须为这个洞取一个数字。
void showWin(int hole){
这里我们必须做一些逻辑来确定两名球员是否并列或一名球员获胜。我使用绑定玩家列表来做到这一点。
int score = 0;
ArrayList<Integer> tied = new ArrayList<>();
for (int i = 0; i < golf.length; i++) {
if(golf[i][hole] > score){ // new winnger
score = golf[i][hole]; // adjust high score
tied.clear(); // throw out every tied player
tied.add(winner); // add the winner
} else if (golf[i][hole] == score){ // we have a new tied player
tied.add(i); // add him
}
}
现在我们可以查看一下这个列表,如果其中有多个玩家,我们会有一个平局,否则单人赢了。
if(tied.size() <= 1){
str += "Winner: " + winner + " with score: " + score;
} else {
str += "Tied: ";
for(int i : tied){ // add all tied player to the output
str += i + " ";
}
str += "with score: " + score;
}