![](/img/trans.png)
[英]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.