Stránka 1 z 1

Help me

PoslaťNapísal: Pia Máj 02, 2008 1:11 am
od Skorpikon
Ciao
Natrafil som na jeden problem pri rieseni uloh z palmy. Tam sa často vyskytuje úloha ktorá si ziada vstup ukonceny bodkou. No a tu je moj problém. Nacítavam vstup cez scanner
Scanner s = new Scanner (System.in);
a za nič na svete neviem prist na nejaku podmienku do while cyklu ktora by ho ukoncila ak nasleduje ta bodka.
Poradte dačo.

PoslaťNapísal: Pia Máj 02, 2008 8:57 am
od alef0
Ak sa nacitava po riadkoch, tak

  Kód:
while(scanner.hasNextLine()){
...
}


Najlepsie to vidiet v clanku o Java IO.

PoslaťNapísal: Pia Máj 02, 2008 3:49 pm
od johny
  Kód:
String vstup = s.nextLine();
while (!vstup.equals(".")) {
    // spracuj riadok zo vstupu
    vstup = s.nextLine();
}


alebo skrátene

  Kód:
String vstup;
while (!(vstup = s.nextLine()).equals(".")) {
    // spracuj riadok zo vstupu
}

PoslaťNapísal: Sob Máj 03, 2008 12:25 am
od Skorpikon
Skusil som aj jedno aj druhe ale stale mi to nechce prejst. Pri debagovani ak narazi na riadok s bodkou tak jak keby uz nemal dalsie kroky a neda sa mi pokracovat v debagovani. No a ked to spustim normalne tak sa mi to nejak nechce ukonci abo co.
Hodil som na net zdrojak ftp://skorpikon.tym.cz/source.java
Kto vie kde je tam chyba? (len k tomu s bodkou lebo chyb tam asi bude viac :-)) )

source

PoslaťNapísal: Sob Máj 03, 2008 12:33 am
od Cavour
neviem ako inym, ale mne ten link nejde ;)

PoslaťNapísal: Sob Máj 03, 2008 12:20 pm
od DeaDMan
ani mne nejde

PoslaťNapísal: Sob Máj 03, 2008 12:40 pm
od Dante
mne zapita heslo a prihlasovacie meno pri pokuse stiahnut forefox 3 beta 5 .....

PoslaťNapísal: Sob Máj 03, 2008 10:47 pm
od johny
Dá sa to stiahnuť, keď zmeníte ftp:// na http://.

Problém 1: Keď načítaš mená hráčov druhého tímu, "kurzor" je na konci riadku s posledným menom. Ďalšie volanie s.nextLine() teda načíta tento koniec riadku, potom je tam jeden prázdny riadok, ktorý načítaš ďalším s.nextLine() a až potom nasledujú riadky s gólmi. Chýba ti tam jeden s.nextLine(), takže sa snažíš rozsekať prázdny riadok na čas a meno, pri čom vznikne tá výnimka.

  Kód:
...
      String pomocny;
      int i = 0;
      pomocny = s.nextLine();  // nacita koniec riadku s poslednym menom
      pomocny = s.nextLine();  // nacita prazdny riadok
// dalsi s.nextLine() uz bude nacitavat prvy cas a meno

// *****************************************************************
//      Tu sa to stale pokasle
// *****************************************************************
      while (!(pomocny=s.nextLine()).equals(".")) {
...


Celá táto časť by sa dala elegantnejšie napísať, ak použiješ s.next() namiesto s.nextLine():

  Kód:
...
      String pomocny;
      int i = 0;

// *****************************************************************
//      Tu sa to stale pokasle
// *****************************************************************
      while (!(pomocny=s.next()).equals(".")) { // nacita cas, pripadne bodku, ak ide o posledny riadok - vtedy sa vnutro cyklu nevykona
         stav[i] = pomocny;  // ulozi nacitany cas
         meno[i] = s.next();  // nacita meno
         ++i;
      }
...


Problém 2: hraci1.length je vždy 100, neviem prečo ho používaš v cykle - veď počet načítaných riadkov máš uložený v premennej i.