在Java中使用toString打印长值

在Java中使用toString打印长值,java,long-integer,tostring,Java,Long Integer,Tostring,我有一个关于使用toString方法打印长值的问题 我的代码是: public class LinkedLargeInteger { private class Node { private int data; private long dat; private Node next; private Node(int data, Node next) { this.data = data; this.next = ne

我有一个关于使用toString方法打印长值的问题

我的代码是:

public class LinkedLargeInteger {

    private class Node {

    private int data;
    private long dat;
    private Node next;

    private Node(int data, Node next) {
        this.data = data;
        this.next = next;
    }

    private Node(int data) {
        this(data, null);
    }

    private Node() {
        data = 0;
        next = null;
    }

    private Node(long dat, Node next) {
        this.dat = dat;
        this.next = next;
    }

    private Node(long dat) {
        this(dat, null);
    }

}

private Node head;
private Node tail;
private int size;
private String largeString;
private int largeInt;
private long largeLong;

public LinkedLargeInteger(long largeLong) {
    String s = Long.toString(largeLong);
    head = new Node();
    tail = head;
    size = 0;
    for (int i = 0; i < s.length(); i++) {
        tail.next = new Node(Long.parseLong(s), null);
        tail = tail.next;
        size++;
    }
}

@Override
public String toString() {
    StringBuilder builder = new StringBuilder();
    Node current = head.next;
    for (int i = 0; i < this.size; i++) {
        builder.append(i + 1);
        current = current.next;
    }
    return builder.toString();
}

public static void main(String[] args) {
    LinkedLargeInteger numLong = new LinkedLargeInteger(100000000000L);
    System.out.println(numLong);
}
}
公共类LinkedLargeInteger{
私有类节点{
私有int数据;
私人长dat;
私有节点下一步;
专用节点(int数据,节点下一个){
这个数据=数据;
this.next=next;
}
专用节点(int数据){
这是(数据,空);
}
专用节点(){
数据=0;
next=null;
}
专用节点(长数据,下一个节点){
this.dat=dat;
this.next=next;
}
专用节点(长dat){
这(dat,null);
}
}
专用节点头;
私有节点尾部;
私有整数大小;
私人字符串放大;
私人内部扩张;
私人长拉格隆;
公共链接大整数(长大整数){
字符串s=长.toString(大长度);
头=新节点();
尾=头;
尺寸=0;
对于(int i=0;i
我已经用我的节点类实现了一个链表,并想用我的构造函数打印一个长值。 当我在main中打印一个长值时,它给出的数值与我作为参数输入的数值完全不同。
有人知道我的问题是什么吗?

尝试修复构造函数:

public LinkedLargeInteger(long largeLong) {
    String s = Long.toString(largeLong);
    head = new Node();
    tail = head;
    size = 0;
    for (int i = 0; i < s.length(); i++) {
    // You were putting the whole number, not the digits
        tail.next = new Node(Long.parseLong(String.valueOf(s.charAt(i))), null); // <<==
        tail = tail.next;
        size++;
    }
}
public-LinkedLargeInteger(long-largeLong){
字符串s=长.toString(大长度);
头=新节点();
尾=头;
尺寸=0;
对于(int i=0;itail.next=new Node(Long.parseLong(String.valueOf(s.charAt(i))),null);//当前您的
toString
方法将返回从1到size-1的所有数字(即
123…size-1
)。如果要附加节点的内容,请使用
builder.append(current.data)因为它有一个toString?你所有的节点也有相同的值。好的,我把它改成了builder.append(current.data);但是现在打印出来的长度只是一堆零。@user2713971我不知道你想要打印什么以及预期的输出是什么。
public String toString() {
StringBuilder builder = new StringBuilder();
    Node current = head.next;
    for (int i = 0; i < this.size; i++) {
        builder.append(current.dat); // <<==
        current = current.next;
    }
    return builder.toString();
}