IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 15. diel - Diár s databázou v Kotlin - Dokončenie

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Rábel David
Člen
Avatar
Rábel David:13.8.2019 20:54

Zdravím při vyhledání záznamu se program zacykluje, po odstranění try catch mechaniky a debugu jsem dohledal tuhle chybu** "DateTimeParse­Exception: Text could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor"**

Viz chyba se dle mého objevuje kvuli téhle části kodu a převodu času do datumu pomocí .toLocalDate()

private fun zjistiDatum(): LocalDate {
    println("Zadejte datum ve tvaru [1.1.2013]:")
    return zjistiLocalDateTime(formatDataBezCasu).toLocalDate()
}

Vyřešil jsem to tak že jsem tuhle metodu přepsal do téhle podoby

rivate fun zjistiDatum(): LocalDate {
        println("Zadejte datum ve tvaru [1.1.2013]:")
        return zjistiLocalDate(formatDataBezCasu)
    }

a poté si vytvořil pomocnou metodu na zadání inputu
viz

private fun zjistiLocalDate(formatData: DateTimeFormatter): LocalDate {
         try {
        return LocalDate.parse(readLine(), formatData)
        } catch (e: Exception) {
        println("Nesprávně zadáno, zadejte prosím znovu")
        return zjistiLocalDate (formatData)
        }
    }

Mohu vědět jestli by to šlo vyřešit nějakým efektivnějším řešením popř to v článku opravit tak aby daný kód fungoval po rozběhnutí programu
Díky

 
Odpovedať
13.8.2019 20:54
Avatar
Jiri Cerveny
Člen
Avatar
Jiri Cerveny:12.5.2020 10:52

Aplikaci jsem si naprogramoval a i jsem si zkusil stáhnout zde uvedený kód ze souboru Poznamkovac.zip, ale aplikace nefunguje tak jak je na screenshotu výše, dokonce se při běhu zacyklí.
Chtělo by to upravit kód a i text článku.

 
Odpovedať
12.5.2020 10:52
Avatar
Adam Bucher
Člen
Avatar
Adam Bucher:27.7.2021 6:55

Jak již zmínil Rábel David, nefunguje parsování na LocalDateTime s DateTimeFormatter získávájícím pouze datum. Osobně jsem to vyřešil předáním metody pro parsování.

private fun <T> obtainFromInput(resultSupplier: Supplier<T>): T {
    return try {
        resultSupplier.get()
    } catch (e: Exception) {
        println("Invalid input. Try again.")
        obtainFromInput(resultSupplier)
    }
}

private fun scanDate(): LocalDate {
    println("Enter date [$dateFormat]:")
    return obtainFromInput { LocalDate.parse(readLine(), dateFormatter) }
}

private fun scanDateTime(): LocalDateTime {
    println("Enter date and time [$dateTimeFormat]:")
    return obtainFromInput { LocalDateTime.parse(readLine(), dateTimeFormatter) }
}

Taktéž jsem přidal metodu vracející seřazený seznam záznamů z databáze, kterou využívám u metod pro vypsání záznamů a vyhledání záznamů, to aby byly záznamy z daného dne seřazené podle času od nejdřívějšího po nejpozdější.

private fun findSortedRecords(date: LocalDate): List<Record> {
    return database.findRecords(date).sortedBy(Record::dateTime)
}

Děkuji za velmi naučné lekce s diářem. :-)

 
Odpovedať
27.7.2021 6:55
Avatar
Monika Havlíčková:18.9.2022 17:22

Celá lekcia skvelá a nakoniec sa program zacyklí. Škoda. Keby nebol koment od Rábel David, tak by som nevedela, čo sa deje.

 
Odpovedať
18.9.2022 17:22
Avatar
Petr Grenar
Člen
Avatar
Petr Grenar:23.2.2023 9:57

Lekce super. Člověk tu pěkně vidí jak správně pracovat s třídami a jak plánovat při vývoji aplikace. Škoda nefunkčního kódu. Bylo by fajn opravit. Komentáře naštěstí zachráníli.

 
Odpovedať
23.2.2023 9:57
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!