当前位置: 首页 > 知识库问答 >
问题:

Java创建直方图方法有人能帮我理解这段代码吗?

艾晋
2023-03-14
public class Library {
    
    public static int[] histogram(int a[],int M) {
        int[] newArr = new int[M];
        
        //Fill the new array
        try {
        if(a.length<M)
            System.out.println("Array lenght should be "
                    + "bigger than the number");
        else
            
            for(int i = 0; i < a.length; i++){
                int count = a[i];
                
                newArr[count] ++;
            }
        
        }
        catch (Exception e) {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }
        
        //return the array
        return newArr;
    }
    
    public void printArray(int s[]) {
        int position = 0;
        for (int i = 0; i < s.length; i++) {
            System.out.print(position+" ");
            position++;
        }
        System.out.println();
        
        for (int i = 0; i < s.length; i++) {
            System.out.print(s[i]+" ");
        }
    }
    
    
    
    public static void main(String[] args) {
        
        Library l1 = new Library();
        
        int J = 5;
        int[] w = {1,2,0,1,2,3};
        
        l1.printArray(histogram(w,J));
        
    }
}

我写了这个和我从谷歌和其他来源看到的一些部分,但我不能理解公共静态int[]直方图中的else部分

        else
            
            for(int i = 0; i < a.length; i++){
                int count = a[i];
                
                newArr[count] ++;
            }

这个新Arr[计数]如何;作品有人可以向我解释,请

共有1个答案

伯逸明
2023-03-14

`这个newArr[计数]如何;有人能给我解释一下吗

在这一条线上发生了两次薄片。

  1. 我们从 newArr 数组中获取对位置计数中值的引用。
  2. 我们将其递增 1。

因此,如果您有数组newArr=[1,2,3]调用newArr[0]将导致您具有以下newArr状态[2,2,3]

如果仍然不清楚,请对此答案发表评论。

 类似资料:
  • 我正在做一个面向对象的作业...它有四个类人员,学生和员工都扩展人员和教师扩展员工... 我已经做了我能做的几乎所有的事情,但是我不能用tostring方法打印出值,也不能填充数组。我已经使用了getter setter,所有的构造函数和方法仍然不能得到任何输出。这里是人类,所有剩下的三个类都已经完成了。加上主文件

  • 有没有插件/附加组件可以帮助创建框架?从何处开始创建框架以及如何继续? 你的意见很有价值。 谢谢,阿美

  • 其目的是对用户输入的分数进行排序、显示和平均。我还没弄明白。如果你已经解决了这个问题,请帮忙。到目前为止,我已经尝试了这段代码,但它不起作用。 我从这段代码中得到的只是一个编译器错误。有人有什么建议吗?谢谢你。

  • 然后: 一周中的几天,后跟“,” 我不能重复一周中的某一天 字符串的最后一天不能有“,”

  • 我有这两种方法。我理解“getTotalSalary”一词,但并不真正理解“getAverageSalary(获取平均工资)”的写作方式。我不明白为什么在结尾处使用问号和冒号以及“(size()!=0)”和0。 这是编码: empReg 是 ArrayList 的名称。员工是一个由“姓名”和“薪水”组成的阶级。getSalary 显然是一种返还薪水的方法。

  • 我这里有一些关于Java的练习问题。我们应该在不使用编译器的情况下确定答案。 参考以下方法: 调用product(6)时的输出是什么? D)48 E)70 根据答案,正确的输出是48。我真的不明白为什么这是真的。6不符合基本情况,所以转到else语句。那么,乘积(6-2)=乘积(4),乘积(2)得到乘积(0),乘积(2)得到乘积(0),得到6*4,4*2,2*0,0*0。但那是32,不是48?是不