我的主要方法:
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();
}
}
答案 0 :(得分:7)
您没有实例化您的数组。你需要这样的东西:
private int[] intArray = new int[SIZE];
其中size是数组的长度。
答案 1 :(得分:1)
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
。
答案 2 :(得分:1)
你没有初始化数组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();
}
}
答案 3 :(得分:1)
通过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,long有更高的范围然后整数,这可能足以避免阵列!
答案 4 :(得分:0)
您忘记初始化数组intArray
我建议使用java.util.List
答案 5 :(得分:0)
您忘了初始化阵列。您已在构造函数中编写它,并且在方法或构造函数中声明的变量需要同时初始化。
注意:建议不要在构造函数中实现逻辑,除非并且直到您没有其他选择。