Java范围输入混乱

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

今天我已经制定了一个河内塔计划,我的最后一步是在代码中实现一个输入范围

该程序将要求最小数量的光盘和最大数量的光盘。在这个范围内,程序应该解决这个范围内每增加一张光盘的难题

示例(根据我的代码):

输入光盘的最小数量:3张 输入光盘的最大数量:6张

输出将分别解决3、4、5和6张光盘的问题

范围正在工作,除非我输入了say 输入光盘的最小数量:3张 输入最大光盘数:2 输出应只计算最小数量的光盘,在这种情况下为3张

代码:

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';