请教大家一个java问题,想了好久没想出来。

一点点小毛病 2017-03-02 09:05:26


代码哪里有问题,测试通不过

import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}*/
public class Plus {
public ListNode plusAB(ListNode a, ListNode b) {
// write code here

//我考虑分别把两个链表中的整数取出来,加完后再放入新的链表中
int A=0;
int B=0;
int count=0;
int C=0;
ListNode rHead = new ListNode(-1);
ListNode result = rHead;

while(a!=null){

A+=a.val*(10^count);//得到链表a中存放的整数
count++;
a=a.next;
}
count=0;
while(b!=null){

B+=b.val*(10^count);//得到链表b中存放的整数
count++;
b=b.next;
}

C = A+B;
while(C/10!=0){

result.next=new ListNode(C%10); //依次将C的值从低位到高位存在链表result中
result=result.next;
C=C/10;


}
result.next = new ListNode(C);

return rHead.next;

}
}
...全文
245 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
public class ListNodeTest {
	public static void main(String[] args) {
		MyNumber num1 = new MyNumber(12, 4, 3, 1, 6, 7, 9);
		MyNumber num2 = new MyNumber(0, 2, 1, 3, 4);

		System.out.println(MyNumber.addition(num1, num2));
		System.out.println(num1);
		System.out.println(num2);
	}
}

class MyNumber {
	private int size;
	private ListNode first = null;
	private ListNode last = null;

	public MyNumber(int... values) {
		if (values == null) {
			throw new RuntimeException();
		}
		if (values[values.length-1] < 1) {
			throw new RuntimeException();
		}
		first = new ListNode(values[0], null);
		last = first;
		size++;
		for (int i = 1; i < values.length; i++) {
			add(values[i]);
			size++;
		}
	}

	@Override
	public String toString() {
		return first.toString();
	}

	public void add(int i) {
		ListNode node = new ListNode(i, null);
		last.next = node;
		last = node;
	}

	public static MyNumber addition(MyNumber num1, MyNumber num2) {
		int num = num1.size > num2.size ? num1.size : num2.size;
		int[] arr = new int[num];
		ListNode node1 = num1.first;
		ListNode node2 = num2.first;
		for (int j = 0; j < num1.size; j++) {
			arr[j] = node1.value;
			node1 = node1.next;
		}
		for (int i = 0; i < num2.size; i++) {
			arr[i] += node2.value;
			node2 = node2.next;
		}
		return new MyNumber(arr);
	}

	class ListNode {
		private ListNode next;
		private int value;

		public ListNode(int value, ListNode next) {
			super();
			this.value = value;
			this.next = next;
		}

		@Override
		public String toString() {
			StringBuffer str = new StringBuffer();
			str.append("{" + value);
			ListNode node = this;
			while (node.next != null) {
				node = node.next;
				str.append(" ," + node.value);
			}
			str.append("}");
			return str.toString();
		}
	}
}
0醉醉哒0 2017-03-02
  • 打赏
  • 举报
回复
我猜你是从vb转过来的。。 ^运算符 不是次方,是异或
一点点小毛病 2017-03-02
  • 打赏
  • 举报
回复
人工置顶!!!!!
一点点小毛病 2017-03-02
  • 打赏
  • 举报
回复
求助各位,哪里有问题。测试用链表a{0,1,1}b为{0},应输出{0,1,1},但是我的程序输出{9,1}。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧