Я пытаюсь создать игру 24 в java для практики. Игра «24» - это арифметическая игра, в которой цель состоит в том, чтобы найти способ манипулировать четырьмя целыми числами, так что конечный результат равен 24. Сложение, вычитание, умножение или деление в любом порядке чисел может использоваться для создания четырех цифр операции от одного до девяти равных 24.Попытка выяснить, почему мой код продолжает печатать
правила просты: вы должны использовать каждый номер только один раз и только 4 цифры, которые читались от пользователя, чтобы найти одно уравнение для получения 24
в основном мой Проблема заключается в том, что я пытаюсь добавить уравнения, которые == 24 к выходу StringBuffer. Возможно, я неправильно использовал StringBuffer. Я хочу добавить все уравнения в StringBuffer, а затем удалить все дубликаты уравнений перед печатью StringBuffer на консоль. Однако, независимо от того, что все уравнения печатаются, и я не уверен, почему. Я не уверен, что это возможно даже с StringBuffer, поскольку это может только добавить символы.
int i = 0;
public void Solve(double w, double x, double y, double z){
double [] nums = {w,x,y,z};
int length = nums.length;
double eHold=0, fHold=0;
boolean [] used = new boolean[length];
StringBuffer output = new StringBuffer(400);
int position = 0;
int value = 0;
if (position == nums.length){
//for (int i=0; i<output.length();i++){
//if (output.)
System.out.println("");
return;
//}
}
else {
for (int i=0; i<nums.length; i++){
if (((nums[i]/nums[i+1])*fHold)==24)
output.append (nums[i]+"/"+nums[i+1]+" * ("+nums[i+3]+" + "+nums[i+4]+")" + " = 24");
else if (((nums[i]/nums[i+1])-fHold)==24)
output.append (nums[i]+"/"+nums[i+1]+" - ("+nums[i+3]+" + "+nums[i+4]+")" + " = 24");
else if (((nums[i]*nums[i+1])-fHold)==24)
output.append (nums[i]+" * "+nums[i+1]+" - ("+nums[i+3]+" + "+nums[i+4]+")" + " = 24");
else if (((nums[i]*nums[i+1])/fHold)==24)
output.append (nums[i]+" * "+nums[i+1]+"/("+nums[i+3]+" + "+nums[i+4]+")" + " = 24");
else if (((nums[i]-nums[i+1])*fHold)==24)
output.append (nums[i]+" - "+nums[i+1]+" * ("+nums[i+3]+" + "+nums[i+4]+")" + " = 24");
else if (((nums[i]-nums[i+1])/fHold)==24)
output.append (nums[i]+" - "+nums[i+1]+"/("+nums[i+3]+" + "+nums[i+4]+")" + " = 24");
else value++;
fHold=nums[i+3]-nums[i+4];
if (((nums[i]/nums[i+1])*fHold)==24)
output.append (nums[i]+"/"+nums[i+1]+" * ("+nums[i+3]+" - "+nums[i+4]+")" + " = 24");
else if (((nums[i]/nums[i+1])+fHold)==24)
output.append (nums[i]+"/"+nums[i+1]+" + ("+nums[i+3]+" - "+nums[i+4]+")" + " = 24");
else if (((nums[i]*nums[i+1])+fHold)==24)
output.append (nums[i]+" * "+nums[i+1]+" + ("+nums[i+3]+" - "+nums[i+4]+")" + " = 24");
else if (((nums[i]*nums[i+1])/fHold)==24)
output.append (nums[i]+" * "+nums[i+1]+"/("+nums[i+3]+" - "+nums[i+4]+")" + " = 24");
else if (((nums[i]+nums[i+1])*fHold)==24)
output.append (nums[i]+" + "+nums[i+1]+" * ("+nums[i+3]+" - "+nums[i+4]+")" + " = 24");
else if (((nums[i]+nums[i+1])/fHold)==24)
output.append (nums[i]+" + "+nums[i+1]+"/("+nums[i+3]+" - "+nums[i+4]+")" + " = 24");
else value++;
fHold=nums[i+3]*nums[i+4];
if (((nums[i]/nums[i+1])-fHold)==24)
output.append (nums[i]+"/"+nums[i+1]+" * ("+nums[i+3]+" * "+nums[i+4]+")" + " = 24");
else if (((nums[i]/nums[i+1])+fHold)==24)
output.append (nums[i]+"/"+nums[i+1]+" + ("+nums[i+3]+" * "+nums[i+4]+")" + " = 24");
else if (((nums[i]-nums[i+1])+fHold)==24)
output.append (nums[i]+" - "+nums[i+1]+" + ("+nums[i+3]+" * "+nums[i+4]+")" + " = 24");
else if (((nums[i]-nums[i+1])/fHold)==24)
output.append (nums[i]+" - "+nums[i+1]+"/("+nums[i+3]+" * "+nums[i+4]+")" + " = 24");
else if (((nums[i]+nums[i+1])-fHold)==24)
output.append (nums[i]+" + "+nums[i+1]+" - ("+nums[i+3]+" * "+nums[i+4]+")" + " = 24");
else if (((nums[i]+nums[i+1])/fHold)==24)
output.append (nums[i]+" + "+nums[i+1]+"/("+nums[i+3]+" * "+nums[i+4]+")" + " = 24");
else value++;
fHold=nums[i+3]/nums[i+4];
if (((nums[i]-nums[i+1])*fHold)==24)
output.append (nums[i]+" - "+nums[i+1]+" * ("+nums[i+3]+"/"+nums[i+4]+")" + " = 24");
else if (((nums[i]-nums[i+1])+fHold)==24)
output.append (nums[i]+" - "+nums[i+1]+" + ("+nums[i+3]+"/"+nums[i+4]+")" + " = 24");
else if (((nums[i]*nums[i+1])+fHold)==24)
output.append (nums[i]+" * "+nums[i+1]+" + ("+nums[i+3]+"/"+nums[i+4]+")" + " = 24");
else if (((nums[i]*nums[i+1])-fHold)==24)
output.append (nums[i]+" * "+nums[i+1]+" - ("+nums[i+3]+"/"+nums[i+4]+")" + " = 24");
else if (((nums[i]+nums[i+1])*fHold)==24)
output.append (nums[i]+" + "+nums[i+1]+" * ("+nums[i+3]+"/"+nums[i+4]+")" + " = 24");
else if (((nums[i]+nums[i+1])-fHold)==24)
output.append (nums[i]+" + "+nums[i+1]+" - ("+nums[i+3]+"/"+nums[i+4]+")" + " = 24");
else value++;
fHold=nums[i+1]*nums[i+3];
if (((nums[i]-fHold)/nums[i+4])==24)
output.append (nums[i]+" - ("+nums[i+1]+" * "+nums[i+3]+")/"+nums[i+4] + " = 24");
else if (((nums[i]-fHold)+nums[i+4])==24)
output.append (nums[i]+" - ("+nums[i+1]+" * "+nums[i+3]+") + "+nums[i+4] + " = 24");
else if (((nums[i]/fHold)+nums[i+4])==24)
output.append (nums[i]+"/("+nums[i+1]+" * "+nums[i+3]+") + "+nums[i+4] + " = 24");
else if (((nums[i]/fHold)-nums[i+4])==24)
output.append (nums[i]+"/("+nums[i+1]+" * "+nums[i+3]+") - "+nums[i+4] + " = 24");
else if (((nums[i]+fHold)/nums[i+4])==24)
output.append (nums[i]+" + ("+nums[i+1]+" * "+nums[i+3]+")/"+nums[i+4] + " = 24");
else if (((nums[i]+fHold)-nums[i+4])==24)
output.append (nums[i]+" + ("+nums[i+1]+" * "+nums[i+3]+") - "+nums[i+4] + " = 24");
else value++;
fHold=nums[i+1]-nums[i+3];
if (((nums[i]*fHold)/nums[i+4])==24)
output.append (nums[i]+" * ("+nums[i+1]+" - "+nums[i+3]+")/"+nums[i+4] + " = 24");
else if (((nums[i]*fHold)+nums[i+4])==24)
output.append (nums[i]+" * ("+nums[i+1]+" - "+nums[i+3]+") + "+nums[i+4] + " = 24");
else if (((nums[i]/fHold)+nums[i+4])==24)
output.append (nums[i]+"/("+nums[i+1]+" - "+nums[i+3]+") + "+nums[i+4] + " = 24");
else if (((nums[i]/fHold)*nums[i+4])==24)
output.append (nums[i]+"/("+nums[i+1]+" - "+nums[i+3]+") * "+nums[i+4] + " = 24");
else value++;
fHold=nums[i+1]/nums[i+3];
if (((nums[i]-fHold)*nums[i+4])==24)
output.append (nums[i]+" - ("+nums[i+1]+"/"+nums[i+3]+") * "+nums[i+4] + " = 24");
else if (((nums[i]-fHold)+nums[i+4])==24)
output.append (nums[i]+" - ("+nums[i+1]+"/"+nums[i+3]+") + "+nums[i+4] + " = 24");
else if (((nums[i]*fHold)+nums[i+4])==24)
output.append (nums[i]+" * ("+nums[i+1]+"/"+nums[i+3]+") + "+nums[i+4] + " = 24");
else if (((nums[i]*fHold)-nums[i+4])==24)
output.append (nums[i]+" * ("+nums[i+1]+"/"+nums[i+3]+") - "+nums[i+4] + " = 24");
else if (((nums[i]+fHold)*nums[i+4])==24)
output.append (nums[i]+" + ("+nums[i+1]+"/"+nums[i+3]+") * "+nums[i+4] + " = 24");
else if (((nums[i]+fHold)-nums[i+4])==24)
output.append (nums[i]+" + ("+nums[i+1]+"/"+nums[i+3]+") - "+nums[i+4] + " = 24");
else value++;
fHold=nums[i+1]+nums[i+3];
if (((nums[i]*fHold)/nums[i+4])==24)
output.append (nums[i]+" * ("+nums[i+1]+" + "+nums[i+3]+")/"+nums[i+4] + " = 24");
else if (((nums[i]*fHold)-nums[i+4])==24)
output.append (nums[i]+" * ("+nums[i+1]+" + "+nums[i+3]+") - "+nums[i+4] + " = 24");
else if (((nums[i]/fHold)-nums[i+4])==24)
output.append (nums[i]+"/("+nums[i+1]+" + "+nums[i+3]+") - "+nums[i+4] + " = 24");
else if (((nums[i]/fHold)*nums[i+4])==24)
output.append (nums[i]+"/("+nums[i+1]+" + "+nums[i+3]+") * "+nums[i+4] + " = 24");
else value++;
if (value == 192){
output.append("There is no solution for this set of numbers");
this.i ++;
}
position ++;
eHold=nums[i+3];
nums[i+3]=nums[i+4];
nums[i+4]=eHold;
}
position ++;
eHold=nums[i+1];
nums[i+1]=nums[i+3];
nums[i+3]=nums[i+4];
nums[i+4]=eHold;
}
position ++;
eHold=nums[i];
nums[i]=nums[i+1];
nums[i+1]=nums[i+3];
nums[i+3]=nums[i+4];
nums[i+4]=eHold;
}
public static void main(String[]args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("Enter 4 numbers between 1 - 9");
double w,x,y,z;
Game Player1 = new Game();
w = input.nextDouble();
x = input.nextDouble();
y = input.nextDouble();
z = input.nextDouble();
input.close();
Player1.Solve(w,x,y,z);
}
}