我是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方法中工作以及它为什么不在私有方法中工作?
答案 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);