Avatar billede nanders Nybegynder
05. januar 2004 - 12:55 Der er 13 kommentarer og
1 løsning

Talformat i java

Kære eksperter,

Jeg ønsker, at det tal jeg genererer fra et javaprogram skal være i det format som man kender fra danske regneark, dvs. at tallet 7 skrives som 7,0 og ikke 7.0 .

Er der nogen der ved om det er muligt.

Mvh. / nanders
Avatar billede arne_v Ekspert
05. januar 2004 - 13:02 #1
Ja.

brug java.text.NumberFormat klassen !
Avatar billede arne_v Ekspert
05. januar 2004 - 13:07 #2
import java.util.*;
import java.text.*;

public class Danish {
    public static void main(String[] args) {
        NumberFormat nf = NumberFormat.getInstance(new Locale("da", "dk"));
        System.out.println(nf.format(12345.67));       
    }
}

outputter:

12.345,67

som det er per DA/DK konvention.
Avatar billede nanders Nybegynder
05. januar 2004 - 13:08 #3
Hej Arne,

Kunne jeg evt få dig til at give en kort vejledning til koden:

import java.util.*;
import java.io.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

    public class ModelJava125 {
   
        private FileOutputStream f;
        private PrintStream ps;
       
        public ModelJava125() throws Exception{
       
        Date date = new Date();
        DateFormat df = new SimpleDateFormat("ddMM-HHmm-SSS");
        String s = df.format(date);
        FileOutputStream f = new FileOutputStream("c:/test/f-"+s+".csv");
        ps = new PrintStream(f);
   

Meget af det andet er i øvrigt noget du også har været så god at hjælpe mig med.

/ nanders
Avatar billede arne_v Ekspert
05. januar 2004 - 13:16 #4
Du laver en Date med tidspunktet "nu".

Så laver du en DateFormat'er som formaterer tid i formatet "ddMM-HHmm-SSS"
og formater Date til en streng i det format.

Og så konstruerer du et filnavn hvor den streng indgår og creater den.
Avatar billede nanders Nybegynder
05. januar 2004 - 13:19 #5
Hej Arne,

Det er de tal som "ps"'eren laver som skal være i det andet format - og ikke datoen.

F.eks. ps.print(G_Tolu_6ppm);

/ nanders
Avatar billede arne_v Ekspert
05. januar 2004 - 13:27 #6
Så erstatter du:

ps.print(G_Tolu_6ppm);

med:

ps.print(nf.format(G_Tolu_6ppm));
Avatar billede nanders Nybegynder
05. januar 2004 - 13:34 #7
Hej Arne,

Det du foreslår tænker jeg om kunne gøres simplere.

Ville:

import java.util.*;
import java.io.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.*;


   
        public class ModelJava125 {
   
        private FileOutputStream f;
        private PrintStream ps;
       
        public ModelJava125() throws Exception{
       
        Date date = new Date();
        DateFormat df = new SimpleDateFormat("ddMM-HHmm-SSS");
        String s = df.format(date);
        FileOutputStream f = new FileOutputStream("c:/test/f-"+s+".csv");
        ps = new PrintStream(f);
        NumberFormat nf = NumberFormat.getInstance(new Locale("da", "dk"));
        System.out.println(nf.format(12345.67));       

kunne gøre det ? Det med at ændre klassens havn til Danish vil jeg helst være uden hvis det kan undgås.
Avatar billede arne_v Ekspert
05. januar 2004 - 13:39 #8
Ja da.

Jeg kaldte klassen i mit lille eksempel for Danish.

Det har ingen betydning for noget som helst.
Avatar billede nanders Nybegynder
05. januar 2004 - 13:42 #9
Hej Arne,

Hvis jeg bruger ps 'eren nu giver den fejlen: "cannot resolve symbol nf"

Jeg går ud fra at der er i linjen:

ps.print(nf.format(G_Tolu_6ppm));

den går galt.

Ved du hvad det er ?
Avatar billede arne_v Ekspert
05. januar 2004 - 13:55 #10
Det er:

NumberFormat nf = NumberFormat.getInstance(new Locale("da", "dk"));
       
som definerer nf.

Hvis den er ovenfor burde det være OK.

Men hvis du udskriver i en anden metode, så skal du flytte den udenfor
metoderne som:

private final static NumberFormat nf = NumberFormat.getInstance(new Locale("da", "dk"));

så kan du bruge den i alle metoder i klassen.
Avatar billede nanders Nybegynder
05. januar 2004 - 18:17 #11
Hej Arne,

private final static NumberFormat nf = NumberFormat.getInstance(new Locale("da", "dk"));

giver en illegal start of expression fejl.

Koden i starten af mit program ser nu ud som følger:

import java.util.*;
import java.io.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.*;

 

        public class ModelJava125 {
   
        private FileOutputStream f;
        private PrintStream ps;
       
        public ModelJava125() throws Exception{
       
        Date date = new Date();
        DateFormat df = new SimpleDateFormat("ddMM-HHmm-SSS");
        String s = df.format(date);
        FileOutputStream f = new FileOutputStream("c:/test/f-"+s+".csv");
        ps = new PrintStream(f);
        // private final static NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
        private final static NumberFormat nf = NumberFormat.getInstance(new Locale("da", "dk"));
        System.out.println(nf.format(12345.67));       
       
        }

        public void Method() {
         

Med venlig hilsen

nanders
Avatar billede arne_v Ekspert
05. januar 2004 - 18:19 #12
Den erklæring skal udenfor metoden.
Avatar billede arne_v Ekspert
05. januar 2004 - 18:20 #13
private final static NumberFormat nf = NumberFormat.getInstance(new Locale("da", "dk"));
        public ModelJava125() throws Exception{
     
        Date date = new Date();
        DateFormat df = new SimpleDateFormat("ddMM-HHmm-SSS");
        String s = df.format(date);
        FileOutputStream f = new FileOutputStream("c:/test/f-"+s+".csv");
        ps = new PrintStream(f);
        System.out.println(nf.format(12345.67));     
     
        }
Avatar billede nanders Nybegynder
05. januar 2004 - 18:33 #14
Hej Arne,

Tusind, tusind tak endnu engang. Det virkede naturligvis.

mvh

nanders
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