我是java的新手,我的任务是使用扫描程序读取数组,使用另一种方法读取int。这是我到目前为止所做的:
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("Enter n: ");
int sz = scanner.nextInt();
System.out.println("Enter locations of stones: ");
int[] array = new int[sz];
for (int i=0;i<array.length;i++){
array[i] = scanner.nextInt();
}
jump(array,sz);
}
我想读的方法就是这样开始的:
public static void jump(int [] array, int amtStone){
int x =0, moveOK =1, jumpedLoc =0, jumpedCount =1;
//x: counter, moveOK: when 1, it is ok to continue. Otherwise, the jump is impossible.
//jumpedLoc: to keep track of the current location of the rabbit
//jumpCount: to count the amount of jumps
while (x<amtStone)
{if(array[x+1]-array[x]<=50){
jumpedLoc = array[x+1];
jumpedCount++;}
}
if (moveOK ==1)
System.out.println(jumpedCount);
else
System.out.println("-1");
}
我正在做的是计算一只兔子到达河对岸的最小跳跃次数。数组中的int表示石头从起始点到河流一侧的距离,另一个int表示石头的数量。兔子可以跳的最长距离是50。
输入和输出:
输入n:7(输入,河流中的石头数量) 32 46 70 85 96 123 145(输入,石头和起点之间的距离,最后一个数字是河流的宽度,即目的地(河流的另一边)与起点之间的距离) 输出:3(这是兔子可以跳的最小次数)
如果不可能,则输出为-1。
当我运行main方法时,输入int和数组后,没有输出,程序也没有继续。我不知道下一步该做什么。
答案 0 :(得分:0)
问题出在while (x<amtStone)
。你遇到了一个无限循环。
你不清楚你想做什么,但你检查是否x < amtStone
。但是x == 0
和amtStone >= 1
(假设您实际上输入了一些数字)并且您似乎永远不会更新其中任何一个。
所以x < amtStone
总是{{1}你永远不会脱离循环。
现在我不是100%确定你想用你的代码实现什么但是我觉得这就是你想要的:
true