Если я правильно понял, вам нужно что-то вроде этого:
public static int pair(int x, int y) {
return x > y ? x * x + x + y : y * y + x;
}
public static Pair<Integer, Integer> unpair(int z) {
int b = (int) Math.sqrt(z);
int a = z - b * b;
return a < b ? new Pair<>(a, b) : new Pair<>(b, a - b);
}
Метод unpair
возвращает Pair
целых чисел,поэтому вам нужно:
import javafx.util.Pair;
Итак, это:
public static void main(String[] args) {
int x = 5;
int y = 12;
int uniqueNumber = pair(x, y);
System.out.println("For x = " + x + " and y = " + y + " the unique number is: " + uniqueNumber);
Pair<Integer, Integer> p = unpair(uniqueNumber);
x = p.getKey();
y = p.getValue();
System.out.println("For the unique number " + uniqueNumber + ": x = " + x + " and y = " + y);
}
напечатает:
For x = 5 and y = 12 the unique number is: 149
For the unique number 149: x = 5 and y = 12
Редактировать Без пары, с массивом:
public static int[] unpair(int z) {
int b = (int) Math.sqrt(z);
int a = z -b * b;
return a < b ? new int[] {a, b} : new int[] {b, a - b};
}
public static void main(String[] args) {
int x = 5;
int y = 12;
int uniqueNumber = pair(x, y);
System.out.println("For x = " + x + " and y = " + y + " the unique number is: " + uniqueNumber);
int[] p = unpair(uniqueNumber);
x = p[0];
y = p[1];
System.out.println("For the unique number " + uniqueNumber + ": x = " + x + " and y = " + y);
}