Avatar billede petersss Nybegynder
30. november 2003 - 14:15 Der er 18 kommentarer og
2 løsninger

Check at første ciffer ikke er 0

Java behandler integers, hvis første ciffer er 0 underligt.  012 bliver ikke til 12, men 10. Hvordan kontrollerer man at det første ciffer ikke er 0, eller er der en måde hvorpå 012 kan opfattes som 12 ?
Avatar billede soreno Praktikant
30. november 2003 - 14:21 #1
012 = 10

fordi 012 er notationen man bruger når man skriver i det oktale talsystem (8-tals-systemet).

Ligesom man bruger
0x12 når man skriver i det hexadecimale talsystem (16-tals-systemet).
Avatar billede arne_v Ekspert
30. november 2003 - 14:21 #2
Tal der starter med 0 er oktaler (8 tals systemet).
Avatar billede arne_v Ekspert
30. november 2003 - 14:22 #3
Undlad at skrive dine tal med foranstillede nuller.
Avatar billede petersss Nybegynder
30. november 2003 - 14:24 #4
det er et input udefra, så jeg skal enten smide en exception, dvs. detecte om der er 0 forrest, eller konvertere fra 8 talssystemet til 10 talssystemet. Hvilke af disse gøres lettest? Og hvordan?
Avatar billede arne_v Ekspert
30. november 2003 - 14:27 #5
Hvordan kommer det input udefra ?

Integer.parseInt ignorerer f.eks. det leading zero fordi rasix kan angives
eksplicit som andet argument.
Avatar billede arne_v Ekspert
30. november 2003 - 14:27 #6
radix ikke rasix
Avatar billede jakoba Nybegynder
30. november 2003 - 14:30 #7
du løser et rigtigt problem, men kik på  parseInt metoden i klassen Integer. Du kan give den en ekstra parameter der fortæller hvilken radix den skal bruge og det er en både nemmere og bedre måde at gøre det på:

  System.out.println(  "'001987' giver " +Integer.parseInt( "001987", 10 ) );

mvh JakobA
Avatar billede jakoba Nybegynder
30. november 2003 - 14:31 #8
Ups. sorry arne, du sagde det først :-)
Avatar billede petersss Nybegynder
01. december 2003 - 13:03 #9
Hmm det er et integer input, int etInteger = Integer.parseInt(int etAndetInteger) returnerer fejl? Hvordan kommer jeg uden om dette?
Avatar billede arne_v Ekspert
01. december 2003 - 13:09 #10
String etAndetInteger;
int etInteger = Integer.parseInt(etAndetInteger);

bør virke (ikke noget int i kaldet).
Avatar billede petersss Nybegynder
01. december 2003 - 13:19 #11
Der har du jo også lavet den om til en string. Integer.parseInt(Integer.toString(016)); returnerer 14, så jeg er ikke rigtigt kommet nogle vegne. Jeg får et input int, som klassen kaldes med.
Avatar billede arne_v Ekspert
01. december 2003 - 13:27 #12
Så er vi tilbage til hvor input kommer fra.

Fordi hvis der står 016 i dit java program, så skal du jo bare skrive 16
i stedetfor.

Du må jo modtage de tal et eller andet sted fra.
Avatar billede arne_v Ekspert
01. december 2003 - 13:28 #13
Og jeg vurderer da at der 99.9% chance for at du modtager dem som String.
Avatar billede petersss Nybegynder
01. december 2003 - 13:35 #14
Integersne er ukendte, et klassekald:
public integer vufmiav(int etInteger,int etAndetInteger)
{
...
mit program
...
return etOutputInteger
}
Avatar billede arne_v Ekspert
01. december 2003 - 13:42 #15
Og hvor er problemet.

int er jo binære integers - de har ikke problemet med octal versus decimal.
Avatar billede petersss Nybegynder
01. december 2003 - 13:49 #16
hvis der er et funktionskald på vufmiav(016,013); opstår problemet. I programmet opfattes de som 14 og 11;
Avatar billede arne_v Ekspert
01. december 2003 - 13:52 #17
Ja.

Det problem kan koden i vufmiav intet gøre ved.

Det er et problem i den kaldende kode.
Avatar billede arne_v Ekspert
11. december 2003 - 20:59 #18
Lukke tid ?
Avatar billede petersss Nybegynder
12. december 2003 - 00:35 #19
jeg vil gerne give dig lidt point for din indsats, skriv venligst et svar
Avatar billede arne_v Ekspert
12. december 2003 - 07:54 #20
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester