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 531 Точки

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

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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.