【问题标题】:Different outputs of for-each loops in Java [closed]Java中for-each循环的不同输出[关闭]
【发布时间】:2021-10-14 13:29:36
【问题描述】:

有一大堆袜子,必须按颜色配对。给定一个表示每只袜子颜色的整数数组,确定有多少双颜色匹配的袜子。 所以我使用了这种方法,但是我得到了不同的输出,我想知道当我在 Java 中使用 for-each 循环同时从用户那里获取值时输出不同的原因。

示例 1:

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int[] hash = new int[300];
        for(int i=0; i<n; i++){
            hash[in.nextInt()]++;
        }
        long ans=0;
        for(int p: hash){
            ans+=p/2;
        }
        System.out.println(ans);
    }
}

这里我得到了输出2

示例 2:

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        int hash[]={1,2,1,2,3,1,2};
        long ans=0;
        for(int p: hash){
            ans+=p/2;
        }
        System.out.println(ans);
    }
}

在这里我得到了输出4

为什么会这样?

【问题讨论】:

  • 在每个循环之前打印你的哈希数组

标签: java loops foreach


【解决方案1】:

原因是你的代码有问题hash[in.nextInt()]++;

您正在读取这些值并将其添加到您的哈希数组中(即 1 2 1 2 3 1 2),当您输入 1 时,您将其存储在索引 1 中,当您存储 2 时,您将其存储在第 2 位索引,当您存储第三个输入(即 1)时,您将覆盖它的索引 1 值。

您需要做的是将hash[in.nextInt()]++; 替换为hash[i] = in.nextInt();

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 2013-08-07
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2019-04-30
    相关资源
    最近更新 更多