2016-11-18 4 views
0

Я работаю над этой программой, которая должна скоро стать классом, но не может в моей жизни выяснить, почему у меня бесконечный цикл. Это мой первый класс кодирования, поэтому для меня это совсем не ново. Я понял, что цикл исходит из моего метода getLocation, и я думаю, что что-то не так с тем, как я пытаюсь подсчитать переменную «location», но, как я уже сказал, я не уверен. Мы только начали использовать несколько классов и частных конструкторов, и это действительно отбрасывает меня. Я возьму любую помощь, которую смогу получить. Благодаря!Обнаружение причины этого бесконечного цикла

public int getLocation(){ 
    while (location <= 250) { 

    location = 5; 
    location++;      //endless loop here 
    System.out.println("test"); 
    } 

    return location; 
} 
+0

Я сократил ваш код до [mcve]. Вы отправили слишком много кода, который просто скрыл проблему. –

+0

@ AndyTurner Спасибо за предложение! Я буду помнить об этом в следующий раз! – Steave

ответ

3
while (location <= 250) { 

location = 5; 
location++;      //endless loop here 
System.out.println("test"); 
} 

location никогда не может превышать 250 в этом цикле. После выполнения тела цикла его значение всегда равно 6, потому что вы устанавливаете его на 5 и добавляете 1.

Итак, при условии, что он достигнет этого цикла, он никогда не остановится.

Переместите location = 5; за пределы тела контура (или просто удалите его).

2
public int getLocation(){ 
    while (location <= 250) { 
     location = 5; // every loop this equals 5 
     location++;     
    } 
    return location; 
} 

Вы устанавливаете местоположение равным 5 каждой петле. Переместите это до while(), чтобы вы только установили его один раз, а затем увеличивали один раз за цикл.

public int getLocation(){ 
    location = 5;   // this equals 5 initially 
    while (location <= 250) { 
     location++;   // this will now increment appropriately 
    } 
    return location; 
} 
+0

Вы можете это сделать, но почему бы не просто «вернуть местоположение = 251;» и отказаться от цикла? На самом деле не совсем ясно, что именно планирует OP. –

+0

@ AndyTurner Нет, это непонятно. Но он сказал, что это его первый класс программирования. Некоторые вещи, которые вы только учите со временем. – dckuehn

+0

К сожалению: 'if (location <= 250) location = 251; return location; '. –

-1

Вы не можете видеть, были ли вы слепыми. Я использую множество операторов печати, чтобы я мог видеть, что делает программа. Если вы НЕ знаете, в чем проблема, вы НЕ знаете, куда помещать инструкции печати. Поэтому выложите множество отчетов для печати, чтобы вы могли видеть.

+3

Серьезно? «Положить много заявлений на печать», хотя, возможно, полезно, это, конечно, не ответ. И более того, не ответ здесь. «Прикрепить отладчик», если ничего другого, но не это – pinkfloydx33

+0

В полной мере использовать любые доступные функции отладки. Если функции отладки недоступны, то корректная заявка на печать будет информативной. В моем случае я бы предпочел использовать Code :: Blocks, который имеет функции отладки. Однако я не могу заставить его работать. Код :: Блоки не могут найти мои библиотеки Arduino. Любая помощь будет оценена по достоинству. –