Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Diletant v Javě

Podle učebnice Javy jsem napsal, zkompiloval a v cml spustil tento prográmek

// Cyklus běží do zapsání znaku S. 

class TestFor { 
	public static void main(String args[])
	throws java.io.IOException {
		int i;
		System.out.println("Stiskněte S pro zastaveni.");

		for (i = 0; (char) System.in.read() != 'S'; i++)
 		 
                System.out.println("Pruchod c." + i);
	}

který jsem pochopil tak, že dokud nenapíšu písmeno S, bude probíhat cyklus (respektive cyklus proběhne jednou pokaždé, když zapíšu jiné písmeno než S, a program skončí v momentě, kdy napíšu S). Ve skutečnosti ale když napíšu jiné písmeno než S, cyklus proběhne 3x. Např. napíšu A a potvrdím Enter, a program vypíše:

Průchod č.0
Průchod č.1
Průchod č.2

Můžete mi prosím pomoct pochopit, proč cyklus proběhne 3x a ne 1x?:-|

Předmět Autor Datum
jednoduche. system.in.read ocakava znaky. ty si mu poslal A a ENTER. Enter su v podstate 2 znaky. CH…
wam_Spider007 05.09.2015 09:02
wam_Spider007
Díky za pomoc, já se mezitím dál v učebnici dočetl co s tím a tak jsem prográmek trochu přepracoval… poslední
re_visor 08.09.2015 03:40
re_visor

Díky za pomoc,
já se mezitím dál v učebnici dočetl co s tím a tak jsem prográmek trochu přepracoval - deklaroval jsem proměnnou ignoruj a přidal cyklus do, který vymaže všechny zadané znaky kromě prvního.

/* Cyklus běží do zapsání znaku S.
*/
class TestFor {
public static void main(String args[])
throws java.io.IOException {
int i;
char ignoruj;

System.out.println("Stiskněte S pro zastaveni.");

for (i = 0; (char) System.in.read() != 'S'; i++){

do {
ignoruj = (char) System.in.read();
} while (ignoruj != '\n');

System.out.println("Pruchod c." + i);
}

}
}

Zpět do poradny Odpovědět na původní otázku Nahoru