[英]Not sure why I am getting a null pointer exception when converting 2D array to 1D array in Java
[英]why am i getting a null pointer when converting string to int array?
我的主要方法:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String string1;
string1 = input.next();
LargeInteger firstInt = new LargeInteger(string1);
System.out.printf("First integer: %s \n", firstInt.display());
}
LargeInteger类:
public class LargeInteger {
private int[] intArray;
//convert the strings to array
public LargeInteger(String s) {
for (int i = 0; i < s.length(); i++) {
intArray[i] = Character.digit(s.charAt(i), 10); // in base 10
}
}
//display the strings
public String display() {
String result = "";
for (int i = 0; i < intArray.length; i++) {
result += intArray[i];
}
return result.toString();
}
}
您没有实例化数组。 您需要类似:
private int[] intArray = new int[SIZE];
其中size是数组的长度。
private int[] intArray;
成员变量默认情况下为null
,因此您需要对其进行初始化。
您最有可能希望它的大小与字符串相同:
public LargeInteger(String s) {
intArray = new int[s.length()]; // Create the actual array before you try to put anything in it
for (int i = 0; i < s.length(); i++) {
intArray[i] = Character.digit(s.charAt(i), 10); // in base 10
}
}
或者,您应该使用可自行调整大小的容器,例如ArrayList
。
您没有初始化数组intArray,那样您会出错,这是完整的程序
import java.util.Scanner;
class TestForNull {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String string1;
string1 = input.next();
LargeInteger firstInt = new LargeInteger(string1);
System.out.printf ("First integer: %s \n", firstInt.display());
}
}
这是LargeInteger
public class LargeInteger {
private int[] intArray;
//convert the strings to array
public LargeInteger(String s) {
intArray = new int[s.length()];
for (int i = 0; i < s.length(); i++) {
intArray[i] = Character.digit(s.charAt(i), 10); // in base 10
}
}
//display the strings
public String display() {
String result="";
for (int i = 0; i < intArray.length; i++) {
result += intArray[i];
}
return result.toString();
}
}
通过Integer.parseInt的不同方法Integer.parseInt(“ yourInt”);
为了实现您的目标:
String a = "12345667788" //sample
String b = "";
int [] vecInt = new int[a.length()]; // The lack of initialization was your mistake as the above stated
for(int i=0; i< a.length(); i++)
{
b = a.substring(0,1);
a= a.substring(1);
vecInt[i] = Integer.parseInt(b);
}
请注意Double,长距离的范围远大于Integer,在您的情况下,这足以避免数组!
你忘了初始化数组intArray
我建议使用java.util.List
您忘记了初始化数组。 您已经在构造函数中编写了它,并且在方法或构造函数中声明的变量需要同时初始化。
注意:除非您没有其他选择,否则不建议在Constructor中实现逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.