2014-09-27 3 views
0

Я новичок в Java, и моя задача состоит в том, чтобы использовать сканер для чтения в массиве и междунар в другой method.This то, что я до сих пор:Как использовать сканер (BlueJ)

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"); 

} 

Что я делаю, чтобы вычислить наименьшее количество прыжков, необходимое для кролика, чтобы достичь другой стороне реки. Ints в массиве представляет расстояния камней от начальной точки как одну сторону реки, а другой int представляет количество камней. Длинное расстояние кролик может прыгать 50.

для входа и выхода:

Введите N: 7 (вход, количество камней в реке) 32 46 70 85 96 123 145 (вход, расстояние между камнем и начальной точкой, последнее число - ширина реки, то есть расстояние между пунктом назначения (другая сторона реки) и начальной точкой) Выход: 3 (Это наименьшее количество раз кролик может прыгать)

Если это невозможно, выход равен -1.

Когда я запускаю основной метод, после ввода int и массива, выход отсутствует, и программа не продолжается. Я не уверен, что делать дальше.

+0

Какой выхода вы ожидаете? Зачем? –

+0

Что заставляет вас думать, что проблема не в методе 'jump()'? У вас есть исключения? Нет проблем с кодом, который вы опубликовали. Можете ли вы опубликовать метод прыжка? – qbit

+0

Ну, это долгая история. То, что я делаю, - это вычисление наименьшего числа прыжков, которое требуется для достижения последнего числа (как на другой стороне реки). Ints в массиве представляет местоположения камней в реке, а другой int представляет количество камней , и самое длинное расстояние прыжка равно 50. – Melody

ответ

0

Проблема здесь while (x<amtStone). Вы сталкиваетесь с бесконечным циклом.

Не совсем понятно, что вы хотите сделать, но вы проверяете, x < amtStone. Но x == 0 и amtStone >= 1 (при условии, что вы действительно вводите некоторые цифры), и вы никогда не обновляете какие-либо из них.

Так что x < amtStone все время 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"); 
} 
+0

hmm ... так что мне нужна строка x ++ после инструкции if? – Melody

+0

Не уверен, что вы имеете в виду, но дополнительная часть - это 'amtStone -;' Опять же, хотя это может быть неправильно. Поскольку я не очень уверен, что вы намерены делать. – qbit

+0

Кроме того, в соответствии с утверждением if, я знаю, что это не так, но я просто не думал о другом способе этого делать ... – Melody

Смежные вопросы