First of all, I found this question on Leetcode.The two digits of the two numbers are stored in reverse order.We have to add them and create a single linked list composed of the sum of the two numbers.Here is the question for reference.

static class Node {
int data;

Node(int data){
this.data = data;
}
}

while(curr!=null){
System.out.print(curr.data + "->");
}
System.out.print("NULL \n");
}

public static Node push(int data, Node head){
Node new_node = new Node(data);
}

if(curr1==null) {
return curr2;
}
if(curr2==null) {
return curr1;
}

int data = 0, units = 0, tens = 0;

while(curr1!=null || curr2!=null){
data = (curr1!=null ? curr1.data : 0) + (curr2!=null ? curr2.data : 0) + tens;
units = data % 10;
tens = data / 10;
curr1 = curr1!=null ? curr1.link : null;
curr2 = curr2!=null ? curr2.link : null;
if(curr1==null && curr2==null && tens > 0){
}
}
}

public static void main(String[] args){

}
}

Please review this code and suggest better ways to solve this problem.Thank you.

...
...
}
...
}

you should have

...
...
}
...
}

In method definitions, one, according to common Java coding conventions, must have a single space between parameter-closing ) and a block-opening {. Instead of

...
}

you should write

public static void printList(Node head) {
...                                ^-- Space!
}

The class name LLAdd is really poor. Taking a look of what it does, you could come up with the name, say, BigInteger.

This is an anti-pattern since there is only one "instance" of the class. Make these non-static and private instead.

Node new_node ...

Once again, Java coding conventions dictate that the fields/variables are named in CamelCase:

Node newNode ...

static class Node {
int data;

Node(int data){
this.data = data;
}
}

Make this private and final since most likely you don't want to shine into the entire package, and you hardly need to derive from that class. Also, I would rename link to next. Finally for this advice, you don't need this.link = null;. Java sets all the object fields to null by default.

public static Node push(int data, Node head)...

That's is a poor name too. Looking from what it does, I suggest you rename it to prependDigit. Also, I believe you would want to check that data is within the range 0-9 unless you want to allow dealing with arbitrary radices.

Instead of implementing printList, I would override toString.

Alternative implementation

import java.util.Scanner;

public final class BigInteger {

private static final class Digit {
Digit next;
int digit;

Digit(char ch) {
this.digit = ch - '0';
}

Digit(int digit) {
this.digit = digit;
}
}

private Digit leastSignificantDigit;

public BigInteger(String integerText) {
checkCharacters(integerText);
leastSignificantDigit =
new Digit(integerText.charAt(integerText.length() - 1));

for (int i = integerText.length() - 2; i >= 0; i--) {
Digit digit = new Digit(integerText.charAt(i));
}
}

private BigInteger() {

}

Digit digit1 = leastSignificantDigit;
Digit digit2 = other.leastSignificantDigit;
BigInteger result = new BigInteger();
boolean carry = false;

while (digit1 != null || digit2 != null) {
int intDigit1 = digit1 == null ? 0 : digit1.digit;
int intDigit2 = digit2 == null ? 0 : digit2.digit;
int sum = intDigit1 + intDigit2 + (carry ? 1 : 0);
carry = sum > 9;
int currentDigit = carry ? (sum - 10) : sum;
Digit digit = new Digit(currentDigit);

if (result.leastSignificantDigit == null) {
result.leastSignificantDigit = digit;
} else {
}

if (digit1 != null) {
digit1 = digit1.next;
}

if (digit2 != null) {
digit2 = digit2.next;
}
}

if (carry) {
}

return result;
}

@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();

for (Digit digit = leastSignificantDigit;
digit != null;
digit = digit.next) {
stringBuilder.append((char)('0' + digit.digit));
}

return stringBuilder.reverse().toString();
}

private void checkCharacters(String integerText) {
for (char ch : integerText.toCharArray()) {
if (!Character.isDigit(ch)) {
throw new IllegalArgumentException(
"Character '" + ch + "' is not a valid digit.");
}
}
}

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger bi1 = new BigInteger(scanner.nextLine());
BigInteger bi2 = new BigInteger(scanner.nextLine());
System.out.println(bi1 + " + " + bi2 + " = " + bi1.add(bi2));
}
}