为了账号安全,请及时绑定邮箱和手机立即绑定

代码错在哪,怎么改?

代码错在哪,怎么改?

慕码人7327609 2017-10-14 00:49:47
import java.util.Arrays;public class HelloWorld {    int Scores[];        //完成 main 方法    public static void main(String[] args) {    int[]scores=new int[] {89 , -23 , 64 , 91 , 119 , 52 , 73};           HelloWorld cc= new HelloWorld();    cc.tops(scores);                }        //定义方法完成成绩排序并输出前三名的功能    public void tops(int[] scores){                        for (int i=0;i<scores.length;i++){            int t=0;            if (scores[i]>0){                Scores[t]=scores[i];                t++;            }         Arrays.sort(Scores);    int[] topt= Scores;    int f=topt.length;    System.out.println("考试成绩的前三名为:");    System.out.println(topt[f]);    System.out.println(topt[f-1]);    System.out.println(topt[f-2]);                }        }报错:Exception in thread "main" java.lang.NullPointerException at HelloWorld.tops(HelloWorld.java:21) at HelloWorld.main(HelloWorld.java:10)   
查看完整描述

4 回答

?
西红柿番茄酱

TA贡献1条经验 获得超1个赞

你的Scores[] 的值是null,方法中循环赋值时会报错

//img1.sycdn.imooc.com/59e1e61000010a7006830690.jpg

查看完整回答
1 反对 回复 2017-10-14
?
weibo_七彩本_0

TA贡献1条经验 获得超1个赞

你的方法中的数组是空的,不报空指针才怪。另外取数组中的前三个最大的数字,你这方法也太不可取了。  两行代码能解决的问题。。。

package Deno4;

import java.util.Arrays;

public class HelloWorld {
	 
	public static void main(String[] args) {
		int[] test = new int[] { 89, -23, 64, 91, 119, 52, 73 };
		int m = test.length;
		Arrays.sort(test);

		System.out.println("考试成绩的前三名为:");
		System.out.println(test[m - 1]);
		System.out.println(test[m - 2]);
		System.out.println(test[m - 3]);

	}
}


查看完整回答
1 反对 回复 2017-10-14
?
Developer_Zuck

TA贡献112条经验 获得超42个赞

你的代码里面有些变量不需要定义的,定义变量是为了简化开发,如果让开发变得复杂就不好了。而且你定义的t是用来干什么的呢?

还有,不需要循环就可以的,你的int t =0定义在for循环里,每次循环都会清零,那么t++也就没有意义了。把你的代码注释了一些,运行会有结果:

//img3.sycdn.imooc.com/59e1665c0001222f01710085.jpg

//img1.sycdn.imooc.com/59e1665c0001e3d804630299.jpg


查看完整回答
反对 回复 2017-10-14
?
onemoo

TA贡献883条经验 获得超454个赞

你在 HelloWorld 中的数组 Scores 有什么用??

main 中你是 new 了一个 scores 数组出来。tops 中你也传递的是 scores,可是你却又让 int[] topt= Scores,这个 Scores 数组变量可是 null 啊! 后面再使用 topt 当然会抛异常啦。

你是不是混淆了 Scores 和 scores?

查看完整回答
反对 回复 2017-10-14
  • 慕码人7327609
    慕码人7327609
    因为要去掉score数组中的负数(题目要求)所以加了一个数组来装
  • onemoo
    onemoo
    如果一定要新增Scores数组,那在使用前要先让Scores变量引用一个真正的数组,比如 new int[scores.length]
  • 西红柿番茄酱
    西红柿番茄酱
    import java.util.Arrays; public class HelloWorld { int Scores[] = new int[6]; public static void main(String[] args) { // TODO Auto-generated method stub int[]scores=new int[] {89 , -23 , 64 , 91 , 119 , 52 , 73}; HelloWorld cc= new HelloWorld(); cc.tops(scores); } public void tops(int[] scores){ int t=0; for (int i=0;i<scores.length;i++){ if (scores[i]>0){ Scores[t]=scores[i]; t++; } } Arrays.sort(Scores); int[] topt= Scores; int f=topt.length; System.out.println("考试成绩的前三名为:"); System.out.println(topt[f-1]); System.out.println(topt[f-2]); System.out.println(topt[f-3]); } }
  • 4 回答
  • 0 关注
  • 1696 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信