04. januar 2014 - 07:07
Der er
14 kommentarer og 1 løsning
BIgDecimal array
Hej I et program skal jeg for en variabel måned i mine data, optælle antallet af f.eks. biler. Jeg ved ikke på forhånd hvilken måned jeg skal optælle for. Jeg tænker at lave et array med en entry for de pågældende måneder og så løbende tælle op efterhånden som jeg gennemgår data. Men jeg har ikke styr på syntaksen. Jeg forsøger mig med noget ala while(){ BigDecimal optalt_biler = new BIgDecimal("55"); String month = "08"; BigDecimal[month] biler = BigDecimal[month].add(optalt_biler); } Dvs. per måned er der kun én optalt værdi. Er der en nemmere måned at udskrive værdierne på end at løbe arrayet biler igennem, måned for måned, i en for-løkke 1 til 12? På forhånd mange tak for hjælpen
Annonceindlæg fra Infor
04. januar 2014 - 15:19
#1
den kode der ser noget mystisk ud - den compiler naeppe men til spoergsmaal om hvordan du itererer gennem alle maaneder kan du enten bruge traditionel for loekke: for(int i = 0; i < 12; i++) { // process ditarray[i] } eller ny for loekke: for(BigDecimal elm : ditarray) { // process elm }
04. januar 2014 - 15:47
#2
Hehe, ja den er mystisk. Jeg prøvede mig lidt frem og kunne ikke få noget til at virke efter hensigten, så mit eksempel er skrevet af rimlig fri fantasi. Kan du gennemskue hvad jeg mener og har brug for? Og hvordan jeg så kommer der til? Jeg tænker ikke det er kompliceret. Hvis jeg i et datasæt har månederne 6, 8 og 9. Hvordan tæller jeg så mine bigdecimal værdier op for hver måned?
04. januar 2014 - 15:51
#3
Foerste spoergsmaal er: hvorfor bruger du BigDecimnal?
04. januar 2014 - 15:52
#4
Fordi jeg regner i kr og øre, og float var for upræcis til det jeg skulle bruge det til
04. januar 2014 - 16:02
#5
God begrundelse. Men i #0 skrev du "antallet af f.eks. biler", saa jeg var lidt i tvivl. Jeg proever lige at lave et eksempel.
04. januar 2014 - 16:06
#6
import java.math.BigDecimal; public class BigDecimalFun { public static void main(String[] args) { BigDecimal[] bda = new BigDecimal[12]; bda[0] = new BigDecimal("12.47"); for(int i = 1; i < bda.length; i++) { bda[i] = bda[i-1].add(new BigDecimal("0.05")); } for(BigDecimal bd : bda) { System.out.println(bd); } } }
04. januar 2014 - 16:18
#7
det ser måske ok ud. Dog mangler jeg at den måned som værdien skal lægges til, er f.eks. 02, 08, 10 eller 12, altså 2 decimaler. Og månedens nummer kommer som String til at starte på. Så hvordan kæder jeg det ind i bda[månedsnummer her]?
04. januar 2014 - 16:28
#8
index i arrays er altid int 0..N-1 hvis du vil bruge string, saa skal du have en HashMap<BigDecimal> jeg proever med et eksempel
04. januar 2014 - 16:30
#9
ups HashMap<String,BigDecimal>
04. januar 2014 - 16:34
#10
import java.math.BigDecimal; import java.util.HashMap; public class BigDecimalFun2 { public static void main(String[] args) { HashMap<String,BigDecimal> bdm = new HashMap<String,BigDecimal>(); for(int i = 0; i < 12; i++) { String m = String.format("%02d", i+1); BigDecimal x = new BigDecimal(10+i); bdm.put(m, x); } for(String m : bdm.keySet()) { System.out.println(m + " " + bdm.get(m)); } } } men jeg tror ikke at du er tilfreds med raekkefoelgen
04. januar 2014 - 16:37
#11
Jeg tror at du vil vaer bedst tjent med at bruge array og saa transformere "01" -> 0, ... "12" -> 11.
04. januar 2014 - 16:41
#12
muligvis ja, hvordan laver jeg lettest 01->0, 02->1 osv?
04. januar 2014 - 16:56
#13
public class S2I { private static int convert(String s) { return Integer.parseInt(s) - 1; } public static void main(String[] args) { String[] sa = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" }; for(String s : sa) { System.out.println(s + " " + convert(s)); } } }
04. januar 2014 - 17:03
#14
Rigtig godt, det ser meget fornuftigt ud, og det får jeg nok til at virke :) Læg et svar som stor tak for hjælpen
04. januar 2014 - 17:56
#15
svar
Kurser inden for grundlæggende programmering