Софтуерно Инженерство
Loading...
+ Нов въпрос
awesomeo avatar awesomeo 20 Точки

Problem 04 - Legendary Farming - Java Fundamentals Retake - 26 October 2015

Привет,

Написах задачата, получават ми се нулевите тестове, но като я пусна в джъдж системата дава грешка по време на изпълнението за всичко, включително на нулевите тестове. Пускам си джава код, не C#, така че не е от това. Доколкото разчитам информацията за нулевите тестове проблемът е в сканирането на празния ред (след като инпута приключи), което не се случва, т.е. while цикълът ми не приключва и затова дава грешката. И нещо не мога да зацеля какво се случва, понеже с импута от уърд файла на задачата програмата прочита "" ред и се изпълнява, а с инпута от джъджа ме чака да му ударя enter, за да продължи. Пробвах да му слагам разни scanner.nextLine() тук-там, обаче нищо не става и не разбирам как да го направя.

Това е кода:

http://pastebin.com/nPrVf0Cj
 

0
Java Advanced
kaloyannikov avatar kaloyannikov 527 Точки

Направи условието на цикъла : 

while(!line.equals(null))

Или в  if-a му сложи да бреакне при това условие

Би трябвало да сработи

0
22/04/2016 13:48:00
stellastoyanova avatar stellastoyanova 26 Точки

Имах същия проблем, виж дали ще се оправи ако напишеш

if (sc.hasNextLine()){
    line = sc.nextLine();

 

1
22/04/2016 14:34:24
awesomeo avatar awesomeo 20 Точки

Нещо не ми се получи нито един от вариантите - в зависимост какво пробвам или иска да натисна допълнителен enter, или направо увисва в безкрайни цикли. В крайна сметка брейкнах цикъла с един boolean, обаче продължава да ми е интересно какво всъщност прави Scannera в тези ситуации, така че да се получи увисването.

Последно това направих, понеже естествено имах и други грешки в първоначалния вариант :) :

http://pastebin.com/hKVBEsDS

0
stela.iv avatar stela.iv 115 Точки

Проблема в първия вариант ти е, че while цикъла ти никога не спира. Във втория (поправения) вариант имаш няколко неизползвани променливи и там където слагаш :

while (true) {
        if (obtained) {
        break;
        }

спокойно вече можеш да го заместиш с :

while (!obtained) {

А увисването се получава, не от Scanner-а, а от безкрайния цикъл.

Успех!

EDIT: Затваряй Scanner-a, когато свърши четенето: scn.close();

1
22/04/2016 16:05:25