Java 检查数组时出现Nullpointerexception
我对java非常陌生,但我必须初始化一个大小为n的2d数组,在本例中为10。 初始化之后,我想检查对角线条目是否为false,以及是否将其设置为true。在我想要返回i的值之后 这是我的代码: 首先,初始化阵列:Java 检查数组时出现Nullpointerexception,java,arrays,nullpointerexception,2d,Java,Arrays,Nullpointerexception,2d,我对java非常陌生,但我必须初始化一个大小为n的2d数组,在本例中为10。 初始化之后,我想检查对角线条目是否为false,以及是否将其设置为true。在我想要返回i的值之后 这是我的代码: 首先,初始化阵列: public static void init(int n) { boolean friendship[][] = new boolean[n][n];} 在我试过这个之后: public static int addUser(String name) {
public static void init(int n) {
boolean friendship[][] = new boolean[n][n];}
在我试过这个之后:
public static int addUser(String name) {
int id=0;
for ( int i=0;i<friendship.length;i++) {
if ( friendship[i][i] = false) {
friendship[i][i] = true;
id = i;
}
}
return id;
}
我能做些什么来解决这个问题
PS:很抱歉英文和格式不好。我假设您有一个名为
友谊的静态字段。用这种方法
public static void init(int n) {
boolean friendship[][] = new boolean[n][n];
}
您正在声明一个新的本地友谊
变量,即静态
成员。因此,静态
友谊
字段保持为空
,当您尝试在添加用户
中访问它时,您会得到一个空点异常
使用
再次假设你有
public static boolean[][] friendship;
在这个
if ( friendship[i][i] = false) {
实际上,您正在将友谊[i][i]
设置为false
。相等运算符是==
这就是我对你们班的看法
public class Test {
/* visibility identifier doesn't matter */ static boolean[][] friendship;
public static void init(int n) {
// this is a different variable from the member declared above
// it is a local variable
boolean friendship[][] = new boolean[n][n];
}
public static int addUser(String username) {
int id=0;
for ( int i=0;i<friendship.length;i++) {
if ( friendship[i][i] = false) { // referring to static field, not the local variable in init()
friendship[i][i] = true;
id = i;
}
}
return id;
}
}
公共类测试{
/*可见性标识符无关紧要*/静态布尔[][]友谊;
公共静态void init(int n){
//这是与上面声明的成员不同的变量
//它是一个局部变量
布尔友谊[][]=新布尔[n][n];
}
公共静态int addUser(字符串用户名){
int id=0;
对于(inti=0;i我假设在这个方法中有一个名为Friendly
的static
字段
public static void init(int n) {
boolean friendship[][] = new boolean[n][n];
}
您正在声明一个新的本地友谊
变量,即静态
成员。因此,静态
友谊
字段保持为空
,当您尝试在添加用户
中访问它时,您会得到一个空点异常
使用
再次假设你有
public static boolean[][] friendship;
在这个
if ( friendship[i][i] = false) {
实际上,您正在将友谊[i][i]
设置为false
。相等运算符为=
这就是我对你们班的看法
public class Test {
/* visibility identifier doesn't matter */ static boolean[][] friendship;
public static void init(int n) {
// this is a different variable from the member declared above
// it is a local variable
boolean friendship[][] = new boolean[n][n];
}
public static int addUser(String username) {
int id=0;
for ( int i=0;i<friendship.length;i++) {
if ( friendship[i][i] = false) { // referring to static field, not the local variable in init()
friendship[i][i] = true;
id = i;
}
}
return id;
}
}
公共类测试{
/*可见性标识符无关紧要*/静态布尔[][]友谊;
公共静态void init(int n){
//这是与上面声明的成员不同的变量
//它是一个局部变量
布尔友谊[][]=新布尔[n][n];
}
公共静态int addUser(字符串用户名){
int id=0;
对于(inti=0;i我假设在这个方法中有一个名为Friendly
的static
字段
public static void init(int n) {
boolean friendship[][] = new boolean[n][n];
}
您正在声明一个新的本地友谊
变量,即静态
成员。因此,静态
友谊
字段保持为空
,当您尝试在添加用户
中访问它时,您会得到一个空点异常
使用
再次假设你有
public static boolean[][] friendship;
在这个
if ( friendship[i][i] = false) {
实际上,您正在将友谊[i][i]
设置为false
。相等运算符为=
这就是我对你们班的看法
public class Test {
/* visibility identifier doesn't matter */ static boolean[][] friendship;
public static void init(int n) {
// this is a different variable from the member declared above
// it is a local variable
boolean friendship[][] = new boolean[n][n];
}
public static int addUser(String username) {
int id=0;
for ( int i=0;i<friendship.length;i++) {
if ( friendship[i][i] = false) { // referring to static field, not the local variable in init()
friendship[i][i] = true;
id = i;
}
}
return id;
}
}
公共类测试{
/*可见性标识符无关紧要*/静态布尔[][]友谊;
公共静态void init(int n){
//这是与上面声明的成员不同的变量
//它是一个局部变量
布尔友谊[][]=新布尔[n][n];
}
公共静态int addUser(字符串用户名){
int id=0;
对于(inti=0;i我假设在这个方法中有一个名为Friendly
的static
字段
public static void init(int n) {
boolean friendship[][] = new boolean[n][n];
}
您正在声明一个新的本地友谊
变量,即静态
成员。因此,静态
友谊
字段保持为空
,当您尝试在添加用户
中访问它时,您会得到一个空点异常
使用
再次假设你有
public static boolean[][] friendship;
在这个
if ( friendship[i][i] = false) {
实际上,您正在将友谊[i][i]
设置为false
。相等运算符为=
这就是我对你们班的看法
public class Test {
/* visibility identifier doesn't matter */ static boolean[][] friendship;
public static void init(int n) {
// this is a different variable from the member declared above
// it is a local variable
boolean friendship[][] = new boolean[n][n];
}
public static int addUser(String username) {
int id=0;
for ( int i=0;i<friendship.length;i++) {
if ( friendship[i][i] = false) { // referring to static field, not the local variable in init()
friendship[i][i] = true;
id = i;
}
}
return id;
}
}
公共类测试{
/*可见性标识符无关紧要*/静态布尔[][]友谊;
公共静态void init(int n){
//这是与上面声明的成员不同的变量
//它是一个局部变量
布尔友谊[][]=新布尔[n][n];
}
公共静态int addUser(字符串用户名){
int id=0;
对于(inti=0;iWhy您为什么要费心检查它们是否为假?为什么不直接将它们设置为真?(顺便说一下,使用==代替=来比较事物)为什么您费心检查它们是否为假?为什么不直接将它们设置为真?(顺便说一下,使用==代替=来比较事物)为什么你要费心去检查它们是否为假?为什么不直接将它们设置为真?(顺便说一下,用==代替=来比较事物)为什么你要费心去检查它们是否为假?为什么不直接将它们设置为真?(顺便说一下,用==代替=来比较事物)OP没有静态字段,什么是静态初始值?它是静态初始值设定项吗?为什么这里需要这个静态值?@nikpon使用static
这里只是一个设计选择。这不是真正的问题。问题是OP有两个同名的变量,一个static
和一个local。local一个隐藏着static
one。你在哪里看到这个设计的?你对静态的看法是绝对错误的。@nikpon你可以去掉静态的,如果OP有一个名为友谊的实例字段,那么OP也会有同样的问题。不,这绝对没有必要,同样的问题不是问题,你没有什么需要改进的OP问题OP没有静态字段,什么是stat