java 数组 方法 返回值问题

importjava.util.*;publicclassDobjiect{publicstaticvoidmain(String[]args){student[]a=n... import java.util.*;
public class Dobjiect
{
public static void main(String[] args)
{
student[] a = new student[5];
a[2].name = nm;
for(int i=0;i<5;i++){ a[i] = new student();}
a=shan(a,"nm");
public static student[] shan(student[] a,String nm)
{
for(int i=0;a.length<5;i++)
{ a[2].name =nm ;

if(a[i].name.equals(a[2].name))
{
a[i]=null;
for(int ii=0;ii<5;ii++)
{
System.out.println(a[ii].old+""+a[ii].name);}
}
}
}

return a;
}
}
class student{
int old;
String name;
void uitls(int old,String name){
this.old = old;
this.name = name;

}
}

怎么样修改才能使a[2]的指向为null,并打印出所有student为null
展开
 我来答
332442181
2013-09-03 · TA获得超过109个赞
知道答主
回答量:98
采纳率:0%
帮助的人:71.1万
展开全部
  1. 你这代码粘过来的时候有问题,}的位置不对,这段代码后面应该有个},表示当前方法结束

    a=shan(a,"nm");}

    而且下面程序System.out.println(a[ii].old+""+a[ii].name);}后多了一个}

  2. 你student[] a = new student[5];虽然创建了a[]数组,但是你的a[2]为null所以他不能有name属性,所以程序会抱错,空指针异常

  3. 不明白你要实现什么功能

追问
我想做的功能是输入一个name 和student.name对比,相同的话 就把这个student从a数组中删除
追答
import java.util.Scanner;
public class Dobjiect {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入字符:");
        String sr = sc.next();
        student[] a = new student[5];
        for (int i = 0; i < 5; i++) {
            a[i] = new student();
        }
        a[0].name = "name1"; a[0].old = 1;
        a[1].name = "name2"; a[1].old = 2;
        a[2].name = "name3"; a[2].old = 3;
        a[3].name = "name4"; a[3].old = 4;
        a[4].name = "name5"; a[4].old = 5;          
        a = shan(a, sr);
        for (int j = 0; j < 5; j++) {
            System.out.println(a[j] != null ? a[j].name : null);
        }
    }
    public static student[] shan(student[] a, String nm) {
        for (int i = 0;i < a.length ; i++) {
            if (a[i].name.equals(nm)) {
                a[i] = null;
            }
        }
        return a;
    }
}

stdent类不变,这样写更明白些

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f170b97
2013-09-03
知道答主
回答量:28
采纳率:0%
帮助的人:17.5万
展开全部
student[] a = new student[5];
这句话错了,赋值错了,应该是 ,你要把每一个实例化后赋值,比如 a[0] = new student();
a[1] = new student();
a[2] = new student();
a[3] = new student();
a[4] = new student();
然后再进行其它操作
追问
for(int i=0;i<5;i++){ a[i] = new student();}我有赋值啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d7bedc1
推荐于2016-01-19 · 超过12用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:32.4万
展开全部
首先你的静态方法应该在外面写,还有你的静态方法没有返回
所以你的a=shan()会出错
还有你的a对象为空怎么会调用它
一调用就汇报空指针异常
package com.zxwl.flzy.advertising.action;
/**
* @author xjq
* @version 创建时间:2013-9-3 下午4:41:28
* 类说明
*/
import java.util.*;
public class test
{
public static student[] shan(student[] a, String nm)
{
for (int i = 0; a.length < 5; i++)
{
a[2].name = nm;
if (a[i].name.equals(a[2].name))
{
a[i] = null;//你的这里为空
for (int ii = 0; ii < 5; ii++)
{
System.out.println(a[ii].old + "" + a[ii].name);//这句调用汇报java.lang.NullPointerException
}
}
}
return a;
}
public static void main(String[] args)
{
student[] a = new student[5];
a[2].name = "nm";
for (int i = 0; i < 5; i++) {
a[i] = new student();
}
a = shan(a, "nm");
}
}
class student {
int old;
String name;
void uitls(int old, String name) {
this.old = old;
this.name = name;
}
}
因为a[2]和a[2]相等,打印a[ii]=a[2]时会包空指针
你将
a[2].name = "nm";
放到
for (int i = 0; i < 5; i++) {
a[i] = new student();
}
后面
student[] a = new student[5];
还没有创建new对象,你就赋值了,也会报错
更多追问追答
追问
我想做的功能是输入一个name 和student.name对比,相同的话 就把这个student从a数组中删除,这怎么做 ,我没有个思路,想不出来
追答
键盘键入吗
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式