Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从数组中提取数字_Java_Arrays - Fatal编程技术网

Java 如何从数组中提取数字

Java 如何从数组中提取数字,java,arrays,Java,Arrays,我目前有java作业,希望能得到一些帮助。我们将计算一个团队记录场景。 我们得到以下数字: 第1组积分 {23,45,65,20} 对手得分 {20,30,20,18} 我把这些放进一个阵列。我还创建了一个公共布尔值。基本上,你要把这些点从数组拉到布尔值?让布尔值决定哪一队获胜?很明显,第一队赢了,但我们应该让计算机来决定,而不是人类 这是我的密码: public class TeamScore { public static boolean Winner(int team1Points, i

我目前有java作业,希望能得到一些帮助。我们将计算一个团队记录场景。
我们得到以下数字:
第1组积分 {23,45,65,20}

对手得分 {20,30,20,18}

我把这些放进一个阵列。我还创建了一个公共布尔值。基本上,你要把这些点从数组拉到布尔值?让布尔值决定哪一队获胜?很明显,第一队赢了,但我们应该让计算机来决定,而不是人类

这是我的密码:

public class TeamScore {

public static boolean Winner(int team1Points, int opponentPoints) {
    if (team1Points > opponentPoints) {
        return true;
    } else {
        return false;
    }
}

public static void main(String[] args) {
    // Scanner in = new Scanner(System.in);
    int[] team1Points = { 23, 45, 65, 20 };
    int[] opponentPoints = { 20, 30, 20, 18 };
    int team1 = 1;
    int opponent = 1;

    for (int i = 0; i < 5; i++) {
        if (Winner(team1Points[i], opponentPoints[1])) {
            team1 += 1;
        } else {
            opponent += 1;
        }
    }

    for (int i = 0; i < 5; i++) {
        if (team1 > 0 && opponent == 0) {
            System.out.println("Team 1 has the perfect record!");
        } else {
            System.out.println("Win" + Arrays.toString(team1Points));
            System.out.println("Loss" + Arrays.toString(opponentPoints));
        }
    }   
}
public class TeamScore{
公共静态布尔赢家(int团队1点,int对手点){
如果(团队1点>对手点){
返回true;
}否则{
返回false;
}
}
公共静态void main(字符串[]args){
//扫描仪输入=新扫描仪(系统输入);
int[]团队1点={23,45,65,20};
int[]对手点={20,30,20,18};
int team1=1;
int对手=1;
对于(int i=0;i<5;i++){
if(优胜者(团队1分[i],对手1分[1])){
团队1+=1;
}否则{
对手+=1;
}
}
对于(int i=0;i<5;i++){
如果(团队1>0&&对手==0){
System.out.println(“第一队有完美的记录!”);
}否则{
System.out.println(“Win”+数组.toString(team1Points));
System.out.println(“丢失”+数组.toString(对点));
}
}   
}
有人能帮我吗?我目前在编程二,但我没有最好的编程一老师。任何帮助都将不胜感激

编辑:
我不认为这是一个重复的问题,因为我已经可以通过更改变量I-->1来解决它。我的问题是,计算机认为,不管分数如何,team1已经赢了


当我运行代码时,我得到一个
java.lang.ArrayIndexOutOfBoundsException
错误。然而,当我将
team1Points[I]
更改为
team1Points[1]
时,它会正常运行,并告诉我“Team1拥有完美的记录!”但是,如果我将
team1Points
的一些数组值更改为小于
opponentPoints
,那么它仍然会说“team1拥有完美的记录!”

不确定为什么会有一个方法赢家(正如Kevin所说,它应该是赢家,因为命名约定),这会变成´(a>b)进入一个大的if语句。类似的内容出现在代码的其他地方

您的变量“team1,Operator=1”莫名其妙地以值1开头,我是否可以理解这是您的代码向读者暗示两个团队都在一场胜利中初始化的一种方式?使用0可能更有意义

你的游戏应该在'team1Points[i]'处因indexoutofboundsexception崩溃,因为你有长度为4的数组,但你的循环运行了5次(当前使用的范围为[0-4],包括在内)。将循环更改为i=1将不会有帮助,因为问题是你最终会遇到
team1Points[4]
由于
i<5
语句

我不知道你在模拟什么游戏,也不知道它是如何运作的,但比较“赢家”(团队1分[I],对手1分[1])在我看来是一个明显的错误(你总是看对手第二轮的得分)

为什么要打印5次结果?如果只想在team1赢得所有回合时打印第一条消息,否则打印每轮的点数,则需要在第二种情况下使用循环计数器作为数组的索引。第一种情况应中断循环,因此不会写入五次,此外,您不需要选中
team1>0&&对手==0
因为只检查“对手==0”就足够了(说到这个条件,只有在我前面提到的将变量初始化为0时它才起作用)。你可以检查team1是否等于数组的大小,但我认为这比
对手==0
更麻烦

最后,请修复您的缩进。使用预览系统,以便您可以在发布前进行双重确认


编辑:Kevin还提出了一个很好的观点,即您应该在循环的第二个语句中使用数组的长度。

我会使用一个很好的缩进,以提高可读性。这些括号不合适。有什么问题吗?当我运行代码时,我会得到一个越界错误。但是当我更改
team1Points[I]
team1Points[1]
然后它会正常运行,并告诉我
团队1有完美的记录!
。但是,如果我将
team1Points
的一些数组值更改为小于
对手点
,它仍然会说
“团队1有完美的记录!”
。我只是想理解这一点。这有点难:/
for(int I=0;I<5;I++){
将从
I=0
循环到
I=4
,但是你有一个4 int
[0]
[3]的数组
可能重复的作为旁注,如果在数组上循环使用其
array#length
变量,它很可能会对您的循环状况有很大帮助。当您即将使用集合时,
Collection#size
方法也一样谢谢您的回复,我很感激。我已经尝试了一些您的建议估计,但它们似乎没有太大变化。作业的目的是让计算机根据给定的数字来决定谁赢了。正如我之前所说,第一队显然赢了,但这是由计算机来决定的。最好的办法是这样做。我不想得到一个直接的答案,我想学习我对f的错误未来参考。如果您仍然在
team1Points[i]
接收到
IndexOutOfBoundsException
,那么原因写在我的第三段中,Kevin给出了解决方案。在您的循环中,计数器
i
应该遍历间隔
[0,数组#长度)
,因为尝试访问该范围之外的任何索引将