Loading...
dmivanova avatar dmivanova 1 Точки

Задача Seats - For Loop.

Здравейте, реших задачата по няколко начина, но всеки път достигам до 75/100 и не мога да разбера защо. Може ли вякой да погледне и да ми каже къде греша, много благодаря. :) 

Условие: 

Деси е купила няколко билета за концерт, на които обаче не са споменати местата в залата, за които са закупени. Тя вижда зависимост между различния формат на билетните номера. Местата, на които отговарят билетите се образуват според следните правила и формат:

- Номер с 4 символа

-  Ако първия символ е главна буква от латинската азбука:

   {първи символ} {втори символ} {трети символ}

  • Ако първия символ не е главна буква от латинската азбука:

   {четвърти символ} {втори символ} {трети символ}

- Номер с 5 или 6 символа {първи символ} {ASCII стойността на втория символ}

Напишете програма, която да помогне на Деси да разшифрова билетните номера.

Вход

  • Първи ред – брой билети, които Деси е закупила – цяло число в интервала от [2… 100]
  • За всеки билет чете билетния номер – текст

Изход

Да се отпечата разшифрования номер на място за всеки билет във формат:
"Seat decoded: {номера}"

Код:

package seats;

import java.util.Scanner;

public class Seats {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scanner = new Scanner(System.in);

		int ticketCounter = Integer.parseInt(scanner.nextLine());

		for (int i = 0; i < ticketCounter; i++) {
			String ticketNumber = scanner.nextLine();

			char firstCharacter = ticketNumber.charAt(0);
			char secondCharacter = ticketNumber.charAt(1);
			char thirdCharacter = ticketNumber.charAt(2);
			char fourthCharacter = ticketNumber.charAt(3);

			if (ticketNumber.length() == 4) {
				if (Character.isUpperCase(ticketNumber.charAt(0))) {
					System.out.printf("Seat decoded: %s%s%s%n", firstCharacter, secondCharacter,
							thirdCharacter);
				} else if (Character.isDigit(ticketNumber.charAt(0))) {
					System.out.printf("Seat decoded: %s%s%s%n", fourthCharacter, secondCharacter,
							thirdCharacter);
				}
			} else if (ticketNumber.length() == 5 || ticketNumber.length() == 6) {
				char asciiCharacter = secondCharacter;
				int ascii = (int) asciiCharacter;
				System.out.printf("Seat decoded: %s%s%n", firstCharacter, ascii);

			}

		}

	}

}
Тагове:
0
Programming Basics with Java
skenderskiantonio avatar skenderskiantonio 36 Точки

 Здравей,

 Може ли да кажеш от къде е задачата, за да тествам в Judge възможните решения. Ето къде виждам възможни грешки:

if (firstCharacter>='A'&&firstCharacter<='Z') { //.toUpperCase() проверява дали са главни и латински, и други букви
    System.out.printf("Seat decoded: %s%s%s%n", firstCharacter, secondCharacter,
            thirdCharacter);
} else { //ако първият символ не е главна латинска буква, не е задължително да е цифра
    System.out.printf("Seat decoded: %s%s%s%n", fourthCharacter, secondCharacter,
            thirdCharacter);
}
0
hm6566 avatar hm6566 52 Точки

Здравей,


Надявам се, че не ти е късно вече. Пропускът ти е в else-a на проверката за билет от четири символа. В условието се казва "ако не е главна буква", а не "ако е цифра". Има доволен брой символи, които не са нито главни букви, нито цифри, така че просто else е напълно достатъчно. :)
 

Накрая също можеш да използваш просто esle. Ако не е четири символа билетът - ще е 5 или 6, няма други варианти. Излишно е и да извеждаш нови променливи. Просто си взимаш вече съществуващата в int.


Ето промените: 
 

if (ticketNumber.length() == 4) {

    if (Character.isUpperCase(ticketNumber.charAt(0))) {

    System.out.printf("Seat decoded: %s%s%s%n", firstCharacter, secondCharacter, thirdCharacter);

    } 

    else if (Character.isDigit(ticketNumber.charAt(0))) {
    
    System.out.printf("Seat decoded: %s%s%s%n", fourthCharacter, secondCharacter, thirdCharacter);
    }

} else if (ticketNumber.length() == 5 || ticketNumber.length() == 6) {

    char asciiCharacter = secondCharacter;
    int ascii = (int) asciiCharacter;
    System.out.printf("Seat decoded: %s%d%n", firstCharacter, (int) secondCharacter);
}


Успех!

0
01/11/2019 19:27:11
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.