小木子呀 2020-12-10 22:54 采纳率: 50%
浏览 76
已采纳

大神们什么情况啊 一直说name 是空?

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toCharArray()" because "this.name" is null
    at p.<init>(Demo.java:33)
    at Demo.main(Demo.java:3)
public class Demo {
    public static void main(String [] args){
        p l =new p("  Tupi   ");
        l.i();
        l.x();
        l.s1();
        //System.out.print(l.c+"   "+l.b);
        int e = 0;
        int g = 5;
        char [] a  = {' ','a','b','c','n',' '};
        System.out.print(String.copyValueOf(a,e,g+1));

    }
}


class p{
    private String name;
    p(String name){
        this.name = name;
    }

    public int getC() {
        return c;
    }

    public int getB() {
        return b;
    }

    private int c;
    private int b;
    char [] a  = name.toCharArray();

    public void i() {
        for (int i = 0;i<a.length;i++){
            if (a[i]!=' '){
                c=i;
                break;

            }
        }
    }
    public void x() {
        for (int i = a.length-1;i>0;i--){
            if (a[i]!=' '){
                b=i;
                break;

            }
        }
    }
    public void s1(){
        System.out.println(String.copyValueOf(a,this.getC(),this.getB()));
    }


}

我人都傻掉了 ,设计思路是这样的 我想模拟trim  去空格,我想先传一个字符串进去,然后再用 字符串转字符数组,然后再用字符数组循环去除空格,再用字符数组转换字符串!    

现在问题是 我穿进去一个字符串,为什么说我是null值 搞不懂 我是小白!大神救救孩子吧!!

  • 写回答

2条回答 默认 最新

  • 南笙菇凉 2020-12-11 10:37
    关注
    public class Demo {
        public static void main(String [] args){
            p l =new p();
            l.str_char("  Tupi   ");
            l.i();
            l.x();
            l.s1();
            //System.out.print(l.c+"   "+l.b);
            int e = 0;
            int g = 5;
            char [] a  = {' ','a','b','c','n',' '};
            System.out.print(String.copyValueOf(a,e,g+1));
     
        }
    }
     
     
    class p{
        //private String name;
        char[] a;
        
        public void str_char(String name) {
        	a = name.toCharArray();;
        }
     
        public int getC() {
            return c;
        }
     
        public int getB() {
            return b;
        }
     
        private int c;
        private int b;
        
     
        public void i() {
            for (int i = 0;i<a.length;i++){
                if (a[i]!=' '){
                    c=i;
                    break;
     
                }
            }
        }
        public void x() {
            for (int i = a.length-1;i>0;i--){
                if (a[i]!=' '){
                    b=i;
                    break;
     
                }
            }
        }
        public void s1(){
            System.out.println(String.copyValueOf(a,this.getC(),this.getB()));
        }
    }

    或者这样子吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥15 this signal is connected to multiple drivers怎么解决
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus