У меня есть класс IntNode который выглядит следующим образом:связанный список, который представляет собой число
public class IntNode {
private int value;
private IntNode next;
public IntNode(int val, IntNode n)
{
value = val;
next = n;
}
public void setValue(int val){ value = val; }
public void setNext(IntNode n){ next = n; }
public int getValue() { return value; }
public IntNode getNext() { return next; }
}
и другой класс, который я назвал его BigNumber, который должен представлять собой любое положительное число (большой или маленький). Класс выглядит следующим образом:
public class BigNumber {
private IntNode list;
//copy constructor.
public BigNumber(BigNumber other){
list = null;
for(IntNode p=other.list; p!=null; p=p.getNext())
list = new IntNode(p.getValue(), list);
}
//Constructor that takes string of a number and puts every digit in the linked list. if the string contains any char that is not digit, the linked list should be: 0->null.
public BigNumber(String num){
list = null;
if(stringIsNum(num)){
for(int i=0; i<num.length(); i++){
list = new IntNode((int)num.charAt(i),list);
}
}
else{
list = new IntNode(0, list);
}
}
private boolean stringIsNum(String num){
for(int i=0; i<num.length(); i++){
if(!(num.charAt(i)>='0' && num.charAt(i)<='9'))
return false;
}
return true;
}
public String toString(){
String s = "";
for(IntNode p=list; p!=null; p=p.getNext())
s+=p.getValue()+"";
return s;
}
}
Проблема в этом классе является то, что, когда я хочу, чтобы напечатать, позволяет сказать, что строка «123», он печатает что-то вроде 515049 вместо фактического числа, которое является 321, (это должен напечатать номер назад). В чем проблема?
Это означает, что пришло время научиться использовать отладчик, так как это должно помочь вам найти ответ самостоятельно и 2) дать вам представление о том, как использовать мощный инструмент. –