Tablica.lenght; a faktyczna wielkość pobrana przez read();

0

Jeżeli mam:

byte dane[] = new byte[10];

to

dane.length;

zwróci mi wartość 10. Wiadomo.

Ale gdy pobiorę znaki z klawiatury po przez np.:

System.in.read(dane);

i wpiszę wyraz np. Drzewo
to tablica będzie miała 4 wolne miejsca prawda? Bo ma zadeklarowane 10 indeksów.
Zatem gdy ją wyświetlam po przez

for (int i=0; i < dane.length; i++){
			System.out.print((char) dane[i]);
			}

Otrzymam wynik

**Drzewo ** oraz 4 puste pola widoczne w konsoli jako 4 kwadraty (takie tam jakby śmieci).

Pytanie zatem moje jest takie, iż jak pobrać wartość faktyczną jaką ma tablica?
Nawet gdy zadeklarowałem 10 indeksów to chce by pobrało mi w pętli tylko to co wpisałem czyli drzewo (6 indeksów)

Nie wiem czy jasno to napisałem, ale mam nadzieję, idzie to ogarnąć :)

P.s zaczynam uczyć się Javy i chciałem spytać czy nie będę zbyt irytujący jak przez jakiś czas będę zadawał pytania na poziomie przedszkola? :]

0

Ja do tej pory zadaję irytujące pytania :D

Z tego co wiem, rzutowanie typów zmiennych poprzez wsadzenie nowego typu w nawias, np.

int i = 0;
double j = (double) i;

nie działa zbyt dobrze z char. Mam taką małą tabelkę rzutowań, więc są rzutowania bezstratne i stratne. Generalnie, rzutowanie stratne zaokrągla nieco wartość liczby, i tak do rzutowań bezstratnych zaliczymy:

  • byte > short > int >long (coraz więcej cyfr)
  • char > int
  • int > double
  • float > double

Zaś do rzutowań stratnych zaliczymy:

  • int > float (float ma mniej cyfr przed przecinkiem niż int)
  • long > float (jw.)
  • long > double (jw.)

W takich standardowych rzutowaniach nie ma rzutowania int > char, więc tym bardziej byte > char.

0

Ok, tylko

System.in.read();

czyta tylko byte
zatem jak odczytać wpisany wyraz, bez rzutowania (char)?

0

@Masif:
Opakuj System.in w Scannera i wczytuj Stringi.

0

Tak też myślałem :/ - cofnięty jestem z zapleczem książkowym.

Kupiłem książkę z 2000 roku do nauki Java i tam jeszcze nie było Scannera, khe khe khe, ale tania była :]

Kupiłem już na allegro Java Podstawy wydanie VIII więc mam nadzieję, że ta lektura mnie bardziej zbliży do dzisiejszych czasów.

0

Scanner to podstawa. Sprawdź przyklejone tematy: Java

0

A jeśli wolisz zostać w prehistorii, to metoda System.in.read() zwraca ile bajtów wczytała. Odejmij 1 lub 2 (w zależności od systemu operacyjnego) i będziesz wiedział jak długi String został wczytany.

0

@bogdans:
Jeżeli zrobi przekierowanie pliku do standardowego wejścia to wtedy srogo się zdziwi :]

0

Nie nie, w ogóle nie kontynuujmy tego tematu skoro oparłem się na wiedzy z 2000 roku. Założyłem, że dane z tej książki mogą mi się na coś przydać, ale myliłem się. Poczekam aż przyjdzie nowszy egzemplarz z 2009 roku. O Scannerze już czytałem, robiłem nawet kilkanaście tutoriali więc wiem, że jest niezastąpiony, ale póki czegoś nie przeczytam z papieru to jakoś nie mogę się na to nastawić.
Tylko książki!

Ok, dzięki za poświęcony czas. Odezwę się niebawem pewnie z jakimś kolejnym fajerwerkiem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1