Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇语;变量只能在此位置为null;带整数数组_Java_Arrays_Integer - Fatal编程技术网

Java 爪哇语;变量只能在此位置为null;带整数数组

Java 爪哇语;变量只能在此位置为null;带整数数组,java,arrays,integer,Java,Arrays,Integer,我得到了一个Null指针访问:变量'numbers'只能在此位置为Null错误,来自intellisense,代码如下。(已标记错误) 公共静态int-isOne(int-incoming){ 字符串original=Integer.toString(传入); int length=original.length(); int i; 整数[]=null; 对于(i=0;i

我得到了一个
Null指针访问:变量'numbers'只能在此位置为Null
错误,来自intellisense,代码如下。(已标记错误)

公共静态int-isOne(int-incoming){
字符串original=Integer.toString(传入);
int length=original.length();
int i;
整数[]=null;
对于(i=0;i
在运行代码时,控制台会在第一个错误时出现异常。LogCat什么也不给

Intellisense建议对这两个错误执行
@suppress

我真的不知道,但我想可能是在我初始化“数字”的时候


谢谢您的帮助。

您可以使用
null
分配
数字,而不是使用数组分配

更改:

int numbers[] = null;
int numbers[] = null;
进入


请注意,在java中,声明
int[]myVar
只分配对数组的引用,实际上并不创建数组对象。为了分配数组本身,您可以使用
newint[size]
,并将新对象分配给所需的变量。

您从不初始化数字。将其设置为null,然后尝试分配给数字[i]。您需要将数字设置为新数组

int[] numbers = new int[length];

你说得对。问题是您没有初始化数字

替换

整数[]=null

整数[]={1,2,3,4,5}

变化:

int numbers[] = null;
int numbers[] = null;


您需要像下面这样初始化数组的大小:

int number = new int[length];
另一个建议是使用JavaArrayList,这将在创建数组时提供更大的灵活性。您不需要初始化到某个大小,您可以在循环中添加到该数组:

ArrayList<Integer> numbers = new ArrayList<Integer>();
ArrayList number=new ArrayList();

因为您正在将值设置为
null
。我想你想做的是

int numbers[] = new int[length];

…或者更确切地说,您不初始化
数字

Java中的数组必须在使用之前声明(您已经完成的部分)并初始化(您还没有完成的部分)。您应该键入以下内容,而不是
null
行:

int[]数字=新的int[长度]

它创建一个新的空整数数组,并将
length
作为其长度


顺便说一句,编写
int[]数字
int数字[]
更常见,因为从前者来看,更明显的是它是一个数组。

这段代码真的很奇怪、低效且有缺陷

并且总是返回0时无效

试试下面的方法

public static int isOne(int incoming){
   return 0;
}
;-)或者使用相同的计算和一个实数,对不起,int,返回值

public static int isOne(int incoming){
   int sum = 0;
   int pos = 0;
   while (true) {
     int digit = incoming % 10;
     System.out.print(pos + "=" + digit + ","); /* reverse order!, this line just tests it */
     incoming /= 10;
     if (incoming == 0) break;
     sum += digit * digit;
     pos ++;
   }
   return sum;
}

嗯,您并没有真正初始化
数字
。您将其设置为null,这在稍后会导致null指针异常,这并不奇怪。返回的0正好是它返回的内容(我让它首先返回一个布尔值,这使我有一个return语句)。当我输入完此注释后,它将返回一些;)
public static int isOne(int incoming){
   int sum = 0;
   int pos = 0;
   while (true) {
     int digit = incoming % 10;
     System.out.print(pos + "=" + digit + ","); /* reverse order!, this line just tests it */
     incoming /= 10;
     if (incoming == 0) break;
     sum += digit * digit;
     pos ++;
   }
   return sum;
}