Java范围输入混乱
今天我已经制定了一个河内塔计划,我的最后一步是在代码中实现一个输入范围 该程序将要求最小数量的光盘和最大数量的光盘。在这个范围内,程序应该解决这个范围内每增加一张光盘的难题 示例(根据我的代码): 输入光盘的最小数量:3张 输入光盘的最大数量:6张 输出将分别解决3、4、5和6张光盘的问题 范围正在工作,除非我输入了say 输入光盘的最小数量:3张 输入最大光盘数:2 输出应只计算最小数量的光盘,在这种情况下为3张 代码:Java范围输入混乱,java,recursion,user-input,increment,towers-of-hanoi,Java,Recursion,User Input,Increment,Towers Of Hanoi,今天我已经制定了一个河内塔计划,我的最后一步是在代码中实现一个输入范围 该程序将要求最小数量的光盘和最大数量的光盘。在这个范围内,程序应该解决这个范围内每增加一张光盘的难题 示例(根据我的代码): 输入光盘的最小数量:3张 输入光盘的最大数量:6张 输出将分别解决3、4、5和6张光盘的问题 范围正在工作,除非我输入了say 输入光盘的最小数量:3张 输入最大光盘数:2 输出应只计算最小数量的光盘,在这种情况下为3张 代码: import java.util.Scanner; import jav
import java.util.Scanner;
import java.util.*;
public class hanoi {
static int moves = 0;
static boolean displayMoves = false;
public static void main(String[] args) {
System.out.print(" Enter the minimum number of Discs: ");
Scanner minD = new Scanner(System.in);
String height = minD.nextLine();
System.out.println();
char source = 'S', auxiliary = 'D', destination = 'A'; // 'Needles'
System.out.print(" Enter the maximum number of Discs: ");
Scanner maxD = new Scanner(System.in);
int heightmx = maxD.nextInt();
System.out.println();
int iHeight = 3; // Default is 3
if (!height.trim().isEmpty()) { // If not empty
iHeight = Integer.parseInt(height); // Use that value
if (iHeight > heightmx){
hanoi(iHeight, source, destination, auxiliary);
}
System.out.print("Press 'v' or 'V' for a list of moves: ");
Scanner show = new Scanner(System.in);
String c = show.next();
displayMoves = c.equalsIgnoreCase("v");
}
for (int i = iHeight; i <= heightmx; i++) {
hanoi(i,source, destination, auxiliary);
System.out.println(" Total Moves : " + moves);
}
}
static void hanoi(int height,char source, char destination, char auxiliary) {
if (height >= 1) {
hanoi(height - 1, source, auxiliary, destination);
if (displayMoves) {
System.out.println(" Move disc from needle " + source + " to "
+ destination);
}
moves++;
hanoi(height - 1, auxiliary, destination, source);
}
}
}
import java.util.Scanner;
导入java.util.*;
河内公务舱{
静态整数移动=0;
静态布尔displayMoves=false;
公共静态void main(字符串[]args){
System.out.print(“输入光盘的最小数量:”);
扫描器minD=新扫描器(System.in);
字符串高度=minD.nextLine();
System.out.println();
字符源='S',辅助='D',目标='A';//'S'
System.out.print(“输入最大光盘数:”);
扫描器maxD=新扫描器(System.in);
int heightmx=maxD.nextInt();
System.out.println();
int iHeight=3;//默认值为3
如果(!height.trim().isEmpty()){//如果不是空的
iHeight=Integer.parseInt(高度);//使用该值
如果(iHeight>heightmx){
河内(iHeight、来源、目的地、辅助);
}
System.out.print(“按'v'或'v'查看移动列表:”);
扫描仪显示=新扫描仪(System.in);
字符串c=show.next();
displayMoves=c.equalsIgnoreCase(“v”);
}
对于(整数i=iHeight;i=1){
河内(高度-1,来源,辅助,目的地);
如果(显示移动){
System.out.println(“将光盘从指针“+源+”移动到”
+目的地);
}
移动++;
河内(高度-1,辅助,目的地,来源);
}
}
}
您应该在main
方法倒数第二行的循环中调用hanoi
方法。循环将从min
迭代到max
因此,您需要
...
for (int i = iHeight; i < heightmx; i++)
{
hanoi(i, ...);
}
可能是
char source = 'S', auxiliary = 'A', destination = 'D';
如果您要命名您的最大高度
heightMax,那么heightMin
将是heightMin
,非常感谢。我将在代码完成后重命名。只有一个小案例我忘了提,你能看看我上面编辑的问题吗?我还包括一段注释掉的代码,其中显示了我认为可能有效的部分。当我取消注释在for循环中添加的if语句时,我遇到了这个错误:error:bad operand types for binary operator'在说出错误的操作数类型后,错误提到了哪些类型?很好。请编辑您的问题并添加您解决问题的方式。并标记一个有用的答案。请帮助它停止工作!我不知道发生了什么!!!但当最小盘数大于最大盘数时,只应使用最小盘数。它起作用了,但只是停止了。救命啊!!!我将编辑我的代码
char source = 'S', auxiliary = 'A', destination = 'D';