主要方法之外的数组?

时间:2016-05-04 15:08:17

标签: java arrays methods nullpointerexception

我是java编程的新手。而且我对方法中的打印数组有点困惑。假设,我有

public class A{
    private static String a;
    private static char[] c;
    private static Scanner sc = new Scanner(System.in);
    public static void main(String[] args){
     word=sc.next();
     char[] c = word.toCharArray();
     System.out.println(c);
     System.out.println(c.length)
     printIt();
    }
    private static void printIt(){
     System.out.println(c);
       }
     }

此示例无法编译并发出NullPointerException。 但对于给定的命令行输入,例如" test"。它会打印出" test"并且长度为" 4"。但是当我尝试使用某种方法打印出数组时,它无法打印出来。

我知道数组已经初始化并填充了字符,因为它打印出来了。

有人能告诉我为什么它在main方法中工作以及它为什么不在私有方法中工作?

3 个答案:

答案 0 :(得分:2)

通过使用char[] c,您在方法内重新声明它,它与类级别上的不同。仅使用c = word.toCharArray()

答案 1 :(得分:1)

你有几个错误:

word=sc.next();

您需要先声明单词:

String word=sc.next();

或者也许?

a = sc.next();
c = a.toCharArray();

当您调用方法c时,您重新声明NullPointerException,隐藏属性并导致 printIt() !:

char[] c = word.toCharArray();  // this is a method attribute not the class one!

还缺少分号;

System.out.println(c.length);
//                          ↑ here

最终结果:

public class A{
    private static String a;
    private static char[] c;
    private static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        a = sc.nextLine();
        c = a.toCharArray();
        System.out.println(c);          // 1
        System.out.println(c.length);   // 2
        printIt();                      // 3
        sc.close();
    }

    private static void printIt() {
        System.out.println(c);
    }
}

<强> INPUT:

asdsadsadsadsads

<强>输出:

asdsadsadsadsads  // 1
16                // 2
asdsadsadsadsads  // 3

答案 2 :(得分:1)

首先,您的代码中存在一些错误

第6行:您必须定义单词(我认为// allow script & iframe tag within posts function allow_post_tags( $allowedposttags ){ $allowedposttags['script'] = array( 'type' => true, 'src' => true, 'height' => true, 'width' => true, ); $allowedposttags['iframe'] = array( 'src' => true, 'width' => true, 'height' => true, 'class' => true, 'frameborder' => true, 'webkitAllowFullScreen' => true, 'mozallowfullscreen' => true, 'allowFullScreen' => true ); return $allowedposttags; } add_filter('wp_kses_allowed_html','allow_post_tags', 1);

第9行:String word = sc.next();

然后您的方法不起作用,因为您的datamember仍为空,您已创建一个具有相同名称的新变量。尝试使用:System.out.println(c.length);

清除第10行