ÖVNINGSUPPGIFT

Uppgift 5 - Formatera utskrifter

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: System.out.print, Math.PI

Formatera utskrifter i Java

I denna uppgift ska vi testa formatera olika tal före utskrift. Utgå från programmet:

public class Uppgift5 {
    public static void main(String[] args) {
        double pi = Math.PI;
        System.out.println(pi);  // 3.141592653589793
       
        // Skriv din kod här
    }
}

Testa att skriva ut pi med olika antal decimaler. Börja först med noll decimaler och stega upp till nio stycken decimaler. Utskriften när programmet körs ska alltså bli:

3.141592653589793
3
3,1
3,14
3,142
3,1416
3,14159
3,141593
3,1415927
3,14159265
3,141592654
Ledtråd

Det är kommandot

String.format(java.util.Locale.forLanguageTag("sv-SE"), "specificerare", tal);

som formaterar en textsträng.

Ledtråd 2

Det är formateraren “%.nf” där n är antal decimaler som avrundar ett tal till närmsta decimaltal. Läs mer om formateringar i avsnittet: System.out.print – Hur skriver man ut text i Java? för att lära dig mer om utskrifter.

Svar
public class Uppgift5 {
    public static void main(String[] args) {
        double pi = Math.PI;
        System.out.println(pi);  // 3.141592653589793

        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.0f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.1f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.2f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.3f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.4f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.5f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.6f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.7f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.8f", pi));
        System.out.println(String.format(java.util.Locale.forLanguageTag("sv-SE"), "%.9f", pi));

    }
}

Förklaring: 

Kommandot

String.format(java.util.Locale.forLanguageTag("sv-SE"), "specificerare", tal);

formaterar en textsträng till önskad format. Det är formateraren “%.nf” där n är antal decimaler som avrundar ett tal till närmsta decimaltal.

Tillbaka till översikt

Exempel med decimalcomma använder uttryckligen svensk locale. Tal skrivs fortfarande med decimalpunkt i Java-källkod.