Здравейте !
Имам лек проблем с задачата “Kitty”.Всички примерни тестове минават,но в “judge” ми дава “IR”.
Това е моя код " https://pastebin.com/LcyAMFMy " .Ще се радвам някой да ми каже къде греша.
Привет,
Като проблем виждам, че се опитваш да излезеш от for цикъла с return, а трябва да е break.
Също така винаги принтираш полседния ред, независимо дали котето е deadlocked.
Ще те посъветвам при принт да използваш или само ’ ’ или само " ".
Много ти благодаря ! (100/100)
Здравейте,
Не ми минава задачата в Judge.
Къде бъркам?
package com.company;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String codesInput = scanner.nextLine();
String[] codes = codesInput.split("");
String movesInput = scanner.nextLine();
String[] moves = movesInput.split(" ");
Integer[] movesInt = new Integer[moves.length];
int souls = 0, food = 0, deadlocks = 0, jumps = 0, count = 0;
for (int i = 0; i < movesInt.length; i++) {
movesInt[i] = Integer.parseInt(moves[i]);
}
if (codes[0].equals("@")) {
souls++;
codes[0] = “0”;
} else if (codes[count].equals("*")) {
food++;
codes[0] = “0”;
} else {
System.out.println(“You are deadlocked, you greedy kitty!”);
System.out.printf(“Jumps before deadlock %d%n”,
jumps);
return;
}
for (int i = 0; i < movesInt.length; i++) {
count = count + movesInt[i];
while (count < 0 || count > codes.length - 1) {
if (count < 0) {
count += codes.length;
}
if (count > codes.length - 1) {
count -= codes.length;
}
}
jumps++;
if (codes[count].equals("@")) {
souls++;
} else if (codes[count].equals(" <em>")) {
food++;
} else if (codes[count].equals(“x”)) {
deadlocks++;
if (count % 2 == 0) {
souls–;
codes[count]="@";
} else {
food–;
codes[count]="</em> ";
}
if (souls < 0 || food < 0) {
System.out.println(“You are deadlocked, you greedy kitty!”);
System.out.printf(“Jumps before deadlock %d%n”,
jumps);
return;
}
}
}
System.out.printf(“Coder souls collected: %d%n”, souls);
System.out.printf(“Food collected: %d%n”, food);
System.out.printf(“Deadlocks: %d%n”, deadlocks);
}
}
Здравей, Юлиян,
В първите два блока (т.е. тези след if
и else if
) на условния оператор
if (codes[count].equals("@")) {
souls++;
} else if (codes[count].equals("*")) {
food++;
} // etc.
намиращ се в тялото на втория цикъл for
, са пропуснати присвояванията
codes[count] = "0";
(Виж аналогичния условен оператор преди началото на този цикъл.)
Също така бих искал да предложа, в бъдеще, ако публикуваш дълги откъси от код, да ползваш някакъв сайт от рода на pastebin.com, или ако предпочиташ да ги включиш директно в текста на поста, да ги ограждаш с тройки обратни кавички, ``` ... ```
(на отделни редове), например така:
```
public class Main {
public static void main(String[] args) {
// etc. ...
}
}
```
Доколкото разбирам, текстовият редактор в този форум поддържа Markdown синтаксис, при който непразен текст, ограден с две звездички, * ... *
, се изписва с наклонен шрифт, а самите звездички се пропускат. Това, както и липсата на форматиране, доста затрудняват четенето на код, който не е escape-нат с обратни кавички, ` ... `
(за кратки пасажи, в които повторните интервали и новите редове се пренебрегват) или с тройки обратни кавички (за по-дълги пасажи, както по-горе). За повече информация: Markdown Cheatsheet.