Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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/arrays/12.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 wierd错误异常;“主要”;app.trackint.getmean处的java.lang.NullPointerException(trackint.java:79)_Java_Arrays_Nullpointerexception - Fatal编程技术网

线程中的Java wierd错误异常;“主要”;app.trackint.getmean处的java.lang.NullPointerException(trackint.java:79)

线程中的Java wierd错误异常;“主要”;app.trackint.getmean处的java.lang.NullPointerException(trackint.java:79),java,arrays,nullpointerexception,Java,Arrays,Nullpointerexception,嗨,我正在尝试创建一个类,该类将数组作为参数,并返回该数组中的min、max、mean和most-frequency元素。然而,当我创建一个类的实例时,我得到一个wierd错误,在app.trackint.getmean(trackint.java:79)的线程“main”java.lang.NullPointerException中说异常有人能帮我吗?谢谢大家的帮助!!! 谢谢大家的帮助 /** * * @author User */ import java.util.Arrays;

嗨,我正在尝试创建一个类,该类将数组作为参数,并返回该数组中的min、max、mean和most-frequency元素。然而,当我创建一个类的实例时,我得到一个wierd错误,在app.trackint.getmean(trackint.java:79)的线程“main”java.lang.NullPointerException中说
异常
有人能帮我吗?谢谢大家的帮助!!! 谢谢大家的帮助

/**
 *
 * @author User
 */


import java.util.Arrays;
public class trackint{


     private int[] array;

    public trackint(int[] a){


 a = new int[2];



    }

    public void getmax(int[] array){

      // Initialize maximum element 
         int max = array[0];

         for (int i = 1; i < array.length; i++) {
             if (array[i] > max) {
                 max = array[i]; 
             }
         System.out.println(max); 
     } 



    }


   public void getmin(int min){

        min = array[0];

         for (int i = 1; i < array.length; i++) {
             if (array[i] < min) {
                 min = array[i]; 
             }
    System.out.println(min); 
     } 



    }

       public void getmax(int max){

      // Initialize maximum element 
        max = array[0];

         for (int i = 1; i < array.length; i++) {
             if (array[i] > max) {
                 max = array[i]; 
             }
      System.out.println(max); 
     } 
       }

        public void getmean(){

      // Initialize maximum element 

        float sum = 0;
    for (int i = 0; i < array.length; i++) {
        sum += array[i];
    }
   System.out.println( sum / array.length);
     } 





       public void mostFrequent(int n, int[] array) {



        // find the max frequency using linear 
        // traversal 
        int max_count = 1, res = array[0]; 
        int curr_count = 1; 

        for (int i = 1; i < n; i++) 
        { 
            if (array[i] == array[i - 1]) 
                curr_count++; 
            else 
            { 
                if (curr_count > max_count) 
                { 
                    max_count = curr_count; 
                    res = array[i - 1]; 
                } 
                curr_count = 1; 
            } 
        } 

        // If last element is most frequent 
        if (curr_count > max_count) 
        { 
            max_count = curr_count; 
            res = array[n - 1]; 
        } 

       System.out.println( res); 

     } 


     public static void main(String []args){

        int[] array =  {1,2,3,4,5};
        trackint a  = new trackint(array);
        a.getmean();

     }
}
/**
*
*@author用户
*/
导入java.util.array;
公共类trackint{
私有int[]数组;
公共轨道int(int[]a){
a=新整数[2];
}
公共void getmax(int[]数组){
//初始化最大元素
int max=数组[0];
for(int i=1;imax){
max=数组[i];
}
系统输出打印项次(最大值);
} 
}
公共void getmin(int min){
最小值=数组[0];
for(int i=1;imax){
max=数组[i];
}
系统输出打印项次(最大值);
} 
}
公共无效getmean(){
//初始化最大元素
浮点数和=0;
for(int i=0;i最大计数)
{ 
最大计数=当前计数;
res=数组[i-1];
} 
当前计数=1;
} 
} 
//如果最后一个元素是最频繁的
如果(当前计数>最大计数)
{ 
最大计数=当前计数;
res=数组[n-1];
} 
系统输出打印项次(res);
} 
公共静态void main(字符串[]args){
int[]数组={1,2,3,4,5};
trackint a=新的trackint(数组);
a、 getmean();
}
}

问题出在您的构造函数中

您的构造函数没有正确初始化实例变量int[]数组,因此它将保持null,并在此代码array.length处抛出NullPointerException

for (int i = 0; i < array.length; i++) { // here array is null so throws NPException
而不是

public trackint(int[] a) {    
        a = new int[2];    
    }
这是重新分配
a
局部变量。相反,你应该这样做

public trackint(int[] a){
    array = a;
}
它将
array
设置为
a
的值


我还没有测试过这个。因此,如果您在回答中遇到任何问题,请在下面进行评论。

您必须初始化
数组

public trackint(int[] a){
    array = a;
}


或者将数组传递给getmean函数。

注意java命名约定。类名应以大写字符开头。方法名称中使用驼峰大小写1)请参见&2)使用缩进代码行和代码块的逻辑一致形式。缩进的目的是使代码的流程更易于遵循!3) 在源代码中只需要一行空白就可以了。
{
之后或
}
之前的空行通常也是多余的。4) 请学习常见的Java命名法(命名约定-例如,…
EachWordUpperCaseClass
firstWordLowerCaseMethod()
firstWordLowerCaseAttribute
,除非它是一个
大写常量
),并始终如一地使用它。
public trackint(int[] a){
    array = a;
}
public trackint(int[] a){
    array = a;
}
public trackint(int[] a) {
    array = new int[a.length];
    System.arraycopy(a, 0, array, 0, a.length);
}