当前位置: 首页 > 知识库问答 >
问题:

如何使用扫描仪(BlueJ)

南门正业
2023-03-14

我是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(这是兔子能跳的最小次数)

当我运行main方法时,在我输入int和数组之后,没有输出,程序也没有继续。我不确定下一步该做什么。

共有1个答案

方绪
2023-03-14

问题在这里while(x 。您将运行一个无限循环。

不太清楚要做什么,但请检查是否 X 。但是 x==0amtstone>=1(假设您实际上输入了一些数字),并且似乎从来没有更新过这两个数字中的任何一个。

所以 X 都是 true,您永远不会跳出循环。

现在我不是100%确定您试图用代码实现什么,但我认为这是您想要的:

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){

    //complete the code here. {
        if(array[x+1]-array[x]<=50){ 
            jumpedLoc = array[x+1]; 
            jumpedCount++;
        } 
        amtStone--;
    }
    if (moveOK ==1) System.out.println(jumpedCount); 
    else System.out.println("-1"); 
}

 类似资料:
  • 我正在为课堂做作业。由于某种原因,程序完全跳过了用户应该键入变量的部分。我想不出任何理由为什么它会以这种方式运行,因为我的其余代码位于部分之后(它要求诸如和类型之类的东西)工作正常且有序。

  • 我想读取一个文本文件,并将每一行放入一个字符串(字符串数组)。然而,这需要扫描文件两次,一次是为了找出有多少行,另一次是为了创建一个这样大小的字符串数组。但它抛出了一个错误,重置方法似乎不起作用。 这是相关的代码片段。

  • 问题内容: 我搜索了类似的问题,但没有一个帮助。 考虑一个文件: 你好你好吗? 当时你在哪里? 我想在每行结束后进行一些操作。如果我使用它,则不会告诉我何时到达第一行的末尾。 我也看到了,但是它只会告诉我是否存在另一行。 问题答案: 考虑使用多个扫描仪,一个扫描仪获取每一行,另一扫描仪扫描每行。我唯一要说明的是,使用完内部扫描仪后,请务必确保将其关闭。实际上,使用完 所有 扫描仪后,您将需要关闭它

  • 问题内容: 请问我关于扫描仪的问题;我在一家小公司工作;我们有一个软件;它生成一个大文本文件;而且我们必须从中得到一些有用的信息; 我想用Java编写一个简单的应用程序以节省时间;你能指导我吗? 例如我要这个输出; 输出量 RFID:25蓝色:562 WifiID:2610 RFID:33 RFID数量:2 例如;这是我的文本文件,因为使用我们的软件生成的每个文件都有14000行:) 我用此源代码

  • 问题内容: 我正在使用扫描仪逐行读取文本文件,但是由于扫描仪遍历每个输入,因此如何获取行号?我的程序是这样的: 这很好用,但是例如: 我想知道它的行号,这意味着1,2,3在第1行中,而3,4,5在第2行中。我如何得到它? 问题答案: 在扫描程序执行操作时,您可以使用代替来跟踪行号。 注意: 由于扫描程序会先读取当前令牌,因此我最初发布的“明显”解决方案不起作用。 ~~~~

  • 我正在尝试编写一个扫描器,以便每次\n被检测到,它会扫描那之后的行,直到一个新的\n出现。我第一次试过这样的东西。 它起作用,输出为 然而,当我尝试用扫描器(System.in)做同样的事情时,即使输入相同,它也不能以同样的方式工作 输出: 编辑:如果输入为 并立即输入提示符,那么Scanner.nextLine()是否就足够了?