no_russion 2019-09-08 17:28 采纳率: 33.3%
浏览 238
已采纳

为什么这道题显示nullpointer

题目是pat的题
https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312

为什么把样例输入进去显示nullpointer

我写的一部分代码如下

package pat乙级;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;

public class Pat1015
{

    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int N,L,H;
        N=in.nextInt();
        L=in.nextInt();
        H=in.nextInt();
        Student s[] = new Student[N] ;
        TreeSet<Student>ts1=new TreeSet();
        TreeSet<Student>ts2=new TreeSet();
        TreeSet<Student>ts3=new TreeSet();
        TreeSet<Student>ts4=new TreeSet();
        for(int i=0;i<N;i++)
        {
            int id=in.nextInt();
            int deScore=in.nextInt();
            int caiScore=in.nextInt();

            s[i].Set(id, deScore, caiScore);

            if(deScore<L||caiScore<H)
            {
                continue;
            }else if(deScore>=H&&caiScore>=H)
            {
                ts1.add(s[i]);
            }else if(deScore>=H&&caiScore<H)
            {
                ts2.add(s[i]);
            }else if(caiScore>=H&&deScore<H)
            {
                ts3.add(s[i]);
            }else
            {
                ts4.add(s[i]);
            }
        }
        System.out.println(ts1.size()+ts2.size()+ts3.size()+ts4.size());

    }

    class Student implements  Comparable<Student>
    {
        int Id;
        int DeScore;
        int CaiScore;
        int Sum;

        public void Set(int id, int deScore, int caiScore)
        {
            Id = id;
            DeScore = deScore;
            CaiScore = caiScore;
            this.Sum=deScore+caiScore;
        }

        public int getId()
        {
            return Id;
        }

        public void setId(int id)
        {
            Id = id;
        }

        public int getDeScore()
        {
            return DeScore;
        }

        public void setDeScore(int deScore)
        {
            DeScore = deScore;
        }

        public int getCaiScore()
        {
            return CaiScore;
        }

        public void setCaiScore(int caiScore)
        {
            CaiScore = caiScore;
        }

        public int compareTo(Student t)
        {
            // TODO Auto-generated method stub
                        if(this.Sum>t.Sum)
                        {
                            return 1;
                        }else if(this.Sum==t.Sum)
                        {
                            if(this.DeScore>t.DeScore)
                            {
                                return 1;
                            }
                            else if(this.DeScore==t.DeScore)
                            {
                                if(this.CaiScore>DeScore)
                                {
                                    return 1;
                                }else if(this.CaiScore>DeScore)
                                {
                                    if(this.Id>t.Id)
                                    {
                                        return 1;
                                    }
                                }
                            }
                        }
                        return -1;
        }
    }
}

  • 写回答

1条回答 默认 最新

  • Roc-xb 后端领域优质创作者 2019-09-09 08:47
    关注

    图片说明
    这是由于没有对数组进行初始化导致的空指针异常,需要进行数组初始化。
    局部代码修改如下即可:

      Student[] s = new Student[N];
      for (int i = 0; i < s.length; i++) {
                s[i] = new Student();
         }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题