我正在尝试使用一堆整数创建一个任意长的自然数。我对Java很陌生,但到目前为止我已经得到了:
import java.util.Stack;
public class BigNatural { // I didn't choose that name >.>
private Stack< Integer > number;
public BigNatural(String value_in) {
while(value_in.length() > 0) {
char temp_char = value_in.charAt(0);
Integer temp_int = Character.digit(temp_char, 10);
this.number.push(temp_int);
if(value_in.length() > 1) {
value_in = value_in.substring(1); }
else { break; }
}
}
我正在使用NullPointerException
获得this.number.push
。在正确初始化堆栈方面有什么我没做的吗?添加number = new Stack< Integer >();
允许我的初始化测试运行,但我觉得这只会创建一个超出范围的本地堆栈。救命啊!
编辑:(见下面的评论)
public void increment () {
Integer temp_int = 0;
if(!this.number.empty()) {
temp_int = this.number.pop();
temp_int++;
if(temp_int == 10) {
this.increment();
this.number.push(0);
} else {
this.number.push(temp_int);
}
} else {
this.number.push(1);
}
}
再次感谢您的帮助!
答案 0 :(得分:3)
添加
number = new Stack< Integer >();
允许我的初始化测试运行,但我觉得这只会创建一个超出范围的本地堆栈。
它不会“超出范围”,因为您将其保存在班级成员number
中。
答案 1 :(得分:1)
它不会超出范围,因为您将新创建的Stack
分配给类变量number
。
此外,由于NullPointerException
未初始化,因此抛出number
。
您需要在number
循环之前初始化while
,或者您可以更改此行:
private Stack<Integer> number;
到
private Stack<Integer> number = new Stack<Integer>();