Diskuze: Chybná deklarace na proměné?

Java Java Chybná deklarace na proměné?

Avatar
dolakdavid
Člen
Avatar
dolakdavid:
package balík;
import java.io.Console;
/**
*@autor David Dolák
*/
public class HlavniTrida {
    private static Object sc;

/**
 *@param args
 */
    public static void main(String[] args) {

        int x = 0;          //Spodní hodnota  (min)
        int y = 1000;       //Vrchní hodnota (strop)
        int z = 500;        //Dotazovana hodnota(polovina)
        String vstup = "a";       //hodnota na vstupu

        do {
           if(vstup.equals("a")){   //uživatel zadal ano
           x = x + z;
           z = z + z/2;
        }
           else {                   //uživatel zadal ne nebo cokoli jiného
           y = y-z;
           z = z - z/2;
        }
        System.out.println("Je tvé číslo větší než " + z + " ?? (zadej a pro ANO n pro NE)");
        vstup = sc.nextLine();      //další dotaz                  !!ZDE HLÁSÍ CHYBU!!

        }while (x != y);        //dokud se nebudou spodni a vrchni hodnoty rovnat zopakuje se

        System.out.println("Tvé číslo je:" + x + " !!!");  //KONEC
    }
}

Ahoj, snažím se jen tak pro procvičení napsat v netBeans program hádající vámi vymyšlené číslo na základě ano/ne dotazů. NB hlásí "cannot find symbol" na řádku kde se snažím definovat vstup do proměné která je deklarována už vně cyklu, no koukněte se samy není to dlouhé a nejspíš triviální chyba.. předem dík.

 
Odpovědět 26.10.2015 0:27
Avatar
dolakdavid
Člen
Avatar
dolakdavid:

Jinak bude to vůbec fungovat? :D

 
Nahoru Odpovědět 26.10.2015 0:28
Avatar
Hit
Člen
Avatar
Odpovídá na dolakdavid
Hit:

Čau, u deklarace proměnný sc změn typ z Object na Scanner a importuj potřebnou knihovnu (import java.util.Scanner;)

private static Scanner sc;
Editováno 26.10.2015 0:36
Nahoru Odpovědět  +2 26.10.2015 0:35
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
Hit
Člen
Avatar
Odpovídá na Hit
Hit:

A jako další ten Scanner inicializuj ;)

sc = new Scanner(System.in);
Nahoru Odpovědět  +1 26.10.2015 0:42
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
Hit
Člen
Avatar
Odpovídá na dolakdavid
Hit:

A poslední komentář z mojí spamerský série: zápis každýho výpočtů se dá zkrátit
x = x + z; lze zapsat jako => x += z;
z = z + z/2; => z += z/2;

Je dobrý si na tohle zvyknout, co nejdřív :).

Editováno 26.10.2015 0:50
Nahoru Odpovědět 26.10.2015 0:50
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
dolakdavid
Člen
Avatar
Odpovídá na Hit
dolakdavid:

Dik pomohlo, jen ten kod byl stejně špatně :D ale to už jsou chyby které si uvědomuji :)

 
Nahoru Odpovědět 26.10.2015 4:26
Avatar
dolakdavid
Člen
Avatar
Odpovídá na Hit
dolakdavid:

Jo a ještě- proč mi nejde ten stejný scanner použít i na vstup do promene int? scanner bere prostě jen řetězce?

 
Nahoru Odpovědět 26.10.2015 4:29
Avatar
sunspinx
Člen
Avatar
sunspinx:

Ak chces, aby si mohol ten vstup ulozit do premennej int, tak pouzi toto:

vstup = Integer.parse­Int(sc.nextLi­ne()); (Zo stringu na int), ale v pripade, ze zadas stringovu hodnotu, tak ti vypise chybu, tak to skus este osetrit pomocou bloku try a catch

 
Nahoru Odpovědět  +1 26.10.2015 11:32
Avatar
Hit
Člen
Avatar
Odpovídá na dolakdavid
Hit:

Pokud chceš načítat čísla, můžeš použít sc.NextInt() nebo můžeš parsovat, jak říka kolega nade mnou :)

Editováno 26.10.2015 13:23
Nahoru Odpovědět  +1 26.10.2015 13:21
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
Odpovídá na dolakdavid
balaz.marek94:

Minulý rok sme v škole riešili tento istý problém, prečo po načítaní String-u uch nenačíta int? Dôvod sme presne nezistili, ale asi je tak naprogramovaný. Ak by si načítaval po sebe int-y a potom až String-y tak by fungoval v poriadku, ale opačne to už nejde, ibaže by si znovu inicializoval Scanner (sc = new Scanner(System.in); ). Ale asi najlepšie riešenie je ako už spomínali kolegovia vyššie, využívať metódu sc.NextLine(), poprípade ju konvertovať na int. :)

 
Nahoru Odpovědět 29.10.2015 14:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.