Здравейте.
Трябва ми малко помощ за тази задача. Проблема е принтирането. Пробвах с друг масив boolean, но отговора става грешен. Също пробвах да преместя принта на следващия ред след скобите, но тогава показва само последния резултат. А както е сега кода показва след N и след всеки ред.
Здравей,
на реда, където печаташ, вместо това може например да добавяш стрингове “true” / “false” към някакъв String [] result и най-накрая да отпечаташ само този array с резултатите с още един един loop.
Също така,
int N = scanner.nextInt();
тук или добави на нов ред само това: scanner.nextLine();
или (по-добре) използвай направо int N = Integer.parseInt(scanner.nextLine());,
така, че кодът ти да очаква следващия инпут на нов ред, а не на същия.
Успех!
Здравей отново!
Тази задача немога да я докарам да работи както трябва. Пробвах доста варианти с масива result, но немога да го накарам да изписва True или False след въвеждането. А след като добавих int N = Integer.parseInt(scanner.nextLine()); при примерно да напиша 2 след това масивите ме кара да пиша и трети масив.
Да, извинявай, забравих да ти кажа за това
for (int a = 0; a <= N; a++)
-> тук трябва да е или
for (int a = 0; a < N; a++) или (int a = 1; a <= N; a++) , защото от 0 до N включително са N+1 броя инпут
тук реално нямаш полза от втория array, както си го написал - всеки елемент от втория масив взема стойността на елемента от първия, т.е. правиш си 2 array-a с еднакви елементи с еднаква последователност. Може би идеята ти е била вторият масив да е с числа, а не със стрингове, вместо по-нататък в кода да ги парсваш към int ? Ако не - можеш спокойно да си работиш и само със String n[] по-нататък:
String n[] = scanner.nextLine().split(",");
String list[] = new String[n.length];
for (int i = 0; i < list.length; i++) {
list[i] = n[i];
}
тук if-else-a не би трябвало да е точно такъв - да кажем при подаден инпут 5,6,7,1 ще отпечаташ true (6>5), true (7>6), false (1>7) и всички тези резултати ще се отнасят само до 1 input array, съответно ще отпечаташ доста повече отговори и системата няма да ги приеме изобщо като валидни.
for (int i = 0; i < list.length - 1; i++) {
int test1 = Integer.parseInt(list[i]);
int test2 = Integer.parseInt(list[i + 1]);
if (test1 > test2) {
result[i] = "false";
break;
}
else {result[i] = "true";}
}
И последно, печатането на резултата го изкарай от всички останали цикли, то си е най накрая и съвсем отделно там си циклиш масива с резултатите:
for (int i = 0; i < result.length; i++) { System.out.println(result[i]); }
Понеже съм сигурна, че не успявам да го обясня като хората, виж преработения ти код и ако има нещо неясно - питай https://pastebin.com/enDivGTX
Мога да ти дам и друга идея за решение, ако ти се занимава - клонираш си всеки input array, сортираш го (с методите на array, не ръчно - Arrays.sort() :), и проверяваш дали са еднакви (пак с методите от array - Arrays.equals()). Съответно в String [] result ще нанасяш резултатите от тези проверки и накрая ще ги отпечатваш.
Здравей @denski.bg
Много благодаря за отделеното време. Всичко работи както трябва.
Само едно нещо не разбрах: как да напълня масив с елементи само с 1 масив. Пробвал съм и с Int масиви. Тогава даже немога до разделянето между елементите (split()).
String n[] = scanner.nextLine().split(","); //нямаш нужда от този следващ array, можеш да си работиш с горния String list[] = new String[n.length];
това String n[] ти е готов масив от стрингове - правиш го като вземаш инпут-а и го разделяш на отделни стрингове там, където има “,” -> това значи scanner.nextLine().split(",")
Т.е. ако инпут-ът ти е 3,4,5 , този ред директно ти създава String n[] = {“3”, “4”, “5”}
Следователно този String n[] можеш да го прекръстиш просто от n на list и да изтриеш тези 3 реда -
String list[] = new String[n.length]; for (int i = 0; i < list.length; i++) { list[i] = n[i]; }
Другият вариант е такъв - да си направиш втория масив директно с integers и по-нататък да си работиш само с него:
String n[] = scanner.nextLine().split(","); int list[] = new int[n.length]; for (int i = 0; i < list.length; i++) { list[i] = Integer.parseInt(n[i]); }
A това, за което питаш, ако е нещо такова кратко дали е възможно - не:)
int n[] = scanner.nextInt().split(",");