/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
newbie. char til int eller char til String
Fra : Sune Petersen


Dato : 28-02-01 16:50

Jeg indlæser en String fra tastaturet.
Først skal jeg bruge den første char og derefter næste char.
Dette gør jeg ved at bruge charAt(i) og dette virker.

Det jeg indlæser skal bruges som tal, så jeg prøvede parseInt men den vil
kun modtage String og ikke char.
Jeg prøvede så at gå en ande vej rundt og konvertere char to string vha.
toString, men denne virker kun på int.

Spørgmålet er så, hvordan jeg kan konvertere char til int eller char til
String.





 
 
Morten Primdahl (28-02-2001)
Kommentar
Fra : Morten Primdahl


Dato : 28-02-01 16:59

Sune Petersen wrote:

> Spørgmålet er så, hvordan jeg kan konvertere char til int eller char til
> String.

Prøv at se flg. smøre, der er nogle forskellige muligheder:

String in = "54";

char c = in.charAt(0);
int i = c%48; //Fordi 0 har ASCII værdi 48, 1 har 49 osv.

System.out.println(i);

String s = ""+c;
i = Integer.parseInt(s);

System.out.println(i);

i = Integer.parseInt(in);

System.out.println(i/10);
System.out.println(i%10);

Mvh Morten

--
Morten Primdahl Caput A/S Tel +45 70 12 24 42
morten@caput.com Nygade 6 Fax +45 70 11 24 42
http://www.caput.com/ DK-1164 Kbh K

Sune Petersen (28-02-2001)
Kommentar
Fra : Sune Petersen


Dato : 28-02-01 17:21

Takker MEGET for det hurtige svar :0)

Jeg sad fortvilet og arbejde videre og kom selv frem til følgende løsninge:

int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i)));
---------
"fraTastatur" er String attributtens navn og indeholder hvad der blev
indtastet fra tastaturet.

"i" i charAt skyldes det ligger i en lykke




Esben Mose Hansen (03-03-2001)
Kommentar
Fra : Esben Mose Hansen


Dato : 03-03-01 12:09

Sune Petersen wrote:

> Jeg sad fortvilet og arbejde videre og kom selv frem til følgende løsninge:
> int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i)));

Hvad med

int tal=Character.digit(fraTastatur.charAt(i), 10);

så skal den stakkels computer ikke oprette nye objekter :)

10-tallet står for radix, altså at det drejer sig om 10-talssystemet.

mvh. Esben



Thorbjørn Ravn Ander~ (05-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 05-03-01 09:53

Esben Mose Hansen wrote:
>
> Sune Petersen wrote:
>
> > Jeg sad fortvilet og arbejde videre og kom selv frem til følgende løsninge:
> > int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i)));
>
> Hvad med
>
> int tal=Character.digit(fraTastatur.charAt(i), 10);
>
> så skal den stakkels computer ikke oprette nye objekter :)

Det er ikke synd for den, men det kan godt tage ret lang tid.

Hvor ser du iøvrigt at der bliver oprettet nye objekter i ovenstående?
Jeg ser ingen "new" nogen steer.

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Martin Moller Peders~ (05-03-2001)
Kommentar
Fra : Martin Moller Peders~


Dato : 05-03-01 13:53

In <3AA353FE.E6E7398A@bigfoot.com> =?iso-8859-1?Q?Thorbj=F8rn?= Ravn Andersen <thunderbear@bigfoot.com> writes:

>Esben Mose Hansen wrote:
>>
>> Sune Petersen wrote:
>>
>> > Jeg sad fortvilet og arbejde videre og kom selv frem til følgende løsninge:
>> > int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i)));
>>
>> Hvad med
>>
>> int tal=Character.digit(fraTastatur.charAt(i), 10);
>>
>> så skal den stakkels computer ikke oprette nye objekter :)

>Det er ikke synd for den, men det kan godt tage ret lang tid.

>Hvor ser du iøvrigt at der bliver oprettet nye objekter i ovenstående?
>Jeg ser ingen "new" nogen steer.

Med java 1.3 til Linux bliver

int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i))) til:

aload_1
iload_2
invokevirtual #3 <Method char charAt(int)>
invokestatic #4 <Method java.lang.String valueOf(char)>
invokestatic #5 <Method int parseInt(java.lang.String)>

Og det ser ikke dyrt ud.

int tal=Character.digit(fraTastatur.charAt(i), 10) bliver til:

aload_1
iload_2
invokevirtual #3 <Method char charAt(int)>
bipush 10
invokestatic #6 <Method int digit(char, int)>

og er derfor nok et par mili-sekunder hurtigere, men hvem gider dog taelle.

/Martin


Thorbjørn Ravn Ander~ (05-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 05-03-01 14:48

Martin Moller Pedersen wrote:
>
> In <3AA353FE.E6E7398A@bigfoot.com> =?iso-8859-1?Q?Thorbj=F8rn?= Ravn Andersen <thunderbear@bigfoot.com> writes:
>
> >Esben Mose Hansen wrote:
> >>
> >> Sune Petersen wrote:
> >>
> >> > Jeg sad fortvilet og arbejde videre og kom selv frem til følgende løsninge:
> >> > int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i)));
> >>
> >> Hvad med
> >>
> >> int tal=Character.digit(fraTastatur.charAt(i), 10);
> >>
> >> så skal den stakkels computer ikke oprette nye objekter :)
>
> >Det er ikke synd for den, men det kan godt tage ret lang tid.
>
> >Hvor ser du iøvrigt at der bliver oprettet nye objekter i ovenstående?
> >Jeg ser ingen "new" nogen steer.
>
> Med java 1.3 til Linux bliver
>
> int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i))) til:
>
> aload_1
> iload_2
> invokevirtual #3 <Method char charAt(int)>
> invokestatic #4 <Method java.lang.String valueOf(char)>
> invokestatic #5 <Method int parseInt(java.lang.String)>
>
> Og det ser ikke dyrt ud.

Som sagt: Ingen new!

At kalde et par klassemetoder kræver ikke nye objekter.

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Jan Uhre (05-03-2001)
Kommentar
Fra : Jan Uhre


Dato : 05-03-01 19:38


Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> skrev i en
nyhedsmeddelelse:3AA3990E.F5AA72F0@bigfoot.com...
> Martin Moller Pedersen wrote:
> >
> > In <3AA353FE.E6E7398A@bigfoot.com> =?iso-8859-1?Q?Thorbj=F8rn?= Ravn
Andersen <thunderbear@bigfoot.com> writes:
> >
> > >Esben Mose Hansen wrote:
> > >>
> > >> Sune Petersen wrote:
> > >>
> > >> > Jeg sad fortvilet og arbejde videre og kom selv frem til følgende
løsninge:
> > >> > int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i)));
> > >>
> > >> Hvad med
> > >>
> > >> int tal=Character.digit(fraTastatur.charAt(i), 10);
> > >>
> > >> så skal den stakkels computer ikke oprette nye objekter :)
> >
> > >Det er ikke synd for den, men det kan godt tage ret lang tid.
> >
> > >Hvor ser du iøvrigt at der bliver oprettet nye objekter i ovenstående?
> > >Jeg ser ingen "new" nogen steer.
> >
> > Med java 1.3 til Linux bliver
> >
> > int tal=Integer.parseInt(String.valueOf(fraTastatur.charAt(i))) til:
> >
> > aload_1
> > iload_2
> > invokevirtual #3 <Method char charAt(int)>
> > invokestatic #4 <Method java.lang.String valueOf(char)>
> > invokestatic #5 <Method int parseInt(java.lang.String)>
> >
> > Og det ser ikke dyrt ud.
>
> Som sagt: Ingen new!
>
> At kalde et par klassemetoder kræver ikke nye objekter.

Det er nu ikke helt sandt, Thorbjørn. Der er måske ingen synlige new, men
String.valueOf('2') returnerer et String objekt, som er oprettet i metoden.

----------------------------------------------------------------------------
----
*** Fra java-doc ***
valueOf
public static String valueOf(char c)

Returns the string representation of the char argument.
Parameters:
c - a char.

Returns:
a n e w l y a l l o c a t e d string of length 1 containing as its
single character the argument c.
----------------------------------------------------------------------------
----

Men hvorvidt omkostningen er stor nok til, at andre krumspring kan betale
sig... Der må jeg nøjes med at tro på Martin

I øvrigt kan sådanne små optimeringer jo med fordel foretages på et senere
tidspunkt.

Med venlig hilsen
Jan Uhre



Thorbjørn Ravn Ander~ (05-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 05-03-01 21:56

Jan Uhre wrote:

> Det er nu ikke helt sandt, Thorbjørn. Der er måske ingen synlige new, men
> String.valueOf('2') returnerer et String objekt, som er oprettet i metoden.
>
> ----------------------------------------------------------------------------
> ----
> *** Fra java-doc ***
> valueOf
> public static String valueOf(char c)
>
> Returns the string representation of the char argument.
> Parameters:
> c - a char.
>
> Returns:
> a n e w l y a l l o c a t e d string of length 1 containing as its
> single character the argument c.
> ----------------------------------------------------------------------------
> ----

Korrekt - jeg havde overset den lille detalje. Jeg kiggede lige efter i
kildeteksten når jeg nu var igang, og der er udtrykkelig en new (på et
finurligt krumspring med et char[] som jeg ikke helt forstår hvorfor er
smart), så jeg tog fejl og du har ret.

> Men hvorvidt omkostningen er stor nok til, at andre krumspring kan betale
> sig... Der må jeg nøjes med at tro på Martin

Jeg tror ikke Martin har timet det

> I øvrigt kan sådanne små optimeringer jo med fordel foretages på et senere
> tidspunkt.

Uha. Kæphestemode coming up.

Hvorfor lave "små" optimeringer?

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Jan Uhre (06-03-2001)
Kommentar
Fra : Jan Uhre


Dato : 06-03-01 01:36


Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> skrev i en
nyhedsmeddelelse:3AA3FD7C.8595226D@bigfoot.com...
> Jan Uhre wrote:
>
> > Det er nu ikke helt sandt, Thorbjørn. Der er måske ingen synlige new,
men
> > String.valueOf('2') returnerer et String objekt, som er oprettet i
metoden.
> >
>
> --------------------------------------------------------------------------
--
> > ----
> > *** Fra java-doc ***
> > valueOf
> > public static String valueOf(char c)
> >
> > Returns the string representation of the char argument.
> > Parameters:
> > c - a char.
> >
> > Returns:
> > a n e w l y a l l o c a t e d string of length 1 containing as
its
> > single character the argument c.
>
> --------------------------------------------------------------------------
--
> > ----
>
> Korrekt - jeg havde overset den lille detalje. Jeg kiggede lige efter i
> kildeteksten når jeg nu var igang, og der er udtrykkelig en new (på et
> finurligt krumspring med et char[] som jeg ikke helt forstår hvorfor er
> smart), så jeg tog fejl og du har ret.
>
> > Men hvorvidt omkostningen er stor nok til, at andre krumspring kan
betale
> > sig... Der må jeg nøjes med at tro på Martin
>
> Jeg tror ikke Martin har timet det
>
> > I øvrigt kan sådanne små optimeringer jo med fordel foretages på et
senere
> > tidspunkt.
>
> Uha. Kæphestemode coming up.
>
> Hvorfor lave "små" optimeringer?

Hehe... sandt nok

Mvh Jan Uhre



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste