webForumDet fria alternativet

Newbie grej

8 svar · 522 visningar · startad av Prime_66

Prime_66Medlem sedan aug. 2004296 inlägg
#1

Håller på med en skoluppgift. Var längesen jag höll på med detta o skulle behöva lite uppfriskning.

Jag har koden nedan. Det är jättesimpelt men jag går bet på när man ska räkna ut medelvärdet av de inmatade talen. Jag antar att man inte kan komma åt variablerna antal och summa som jag försöker? Vad saknas i private double medel() ?

import java.io.*;

public class Lab1 {
    
    public static void main (String[] args) {
        Medelklass m = new Medelklass();
        m.läsInTal();
        m.skrivUtMedel();
    }
} 

/**
 *  
 */
class Medelklass {
    
    // HÄR SKA INSTANSVARIABLERNA antal OCH summa DEKLARERAS
    int antal;
    int summa;
    
    
    Mio mio = new Mio();
    
    public Medelklass() {
        // HÄR SKA INSTANSVARIABLERNA antal OCH summa INITIERAS TILL NOLL
         antal=0;
         summa=0;
    }
    
    
    public void läsInTal() {
        System.out.print("Skriv en rad med tal: ");
        System.out.flush();
        while (mio.nextChar() != '\n') {
            summa += mio.getInt();
            antal++;
        }
    }

    private double medel() {
        // HÄR SKA MEDELVÄRDET BERÄKNAS
      
        return summa/antal;
    }
    
    /** Efterlyses: Bra kommentar */
    public void skrivUtMedel() {
        // HÄR SKA MEDELVÄRDET SKRIVAS UT
        System.out.print("Medelvardet ar: ");
        System.out.print(medel());
             System.out.flush();

    } 
}
Prime_66Medlem sedan aug. 2004296 inlägg
#2

Hmm nu ändrade jag så att antal och summa var av typen double och då får jag decimaler. Men det var väl rätt mysko? Om funktionen är double borde det väl räcka?

SPiNMedlem sedan mars 20005 832 inlägg
#3

Det beror troligtvis på vilken version av Java du kör. Med Java version 1.6 kickar autoboxingen in och returnerar en double från division med två heltal.

Dock ska det räcka med att du konverterar den ena delen (täljare eller nämnare) i divisionen till double, för att metoden ska kunna returnera en double:

private double medel() {
    return (Double.valueOf(summa) / antal);
}
Prime_66Medlem sedan aug. 2004296 inlägg
#4

Mm ok. Ja man tycker att den borde göra det automatiskt men har kanske en gammal version. Stämmer som du säger, den ena räcker.

SPiNMedlem sedan mars 20005 832 inlägg
#5

Autoboxing finns från v1.5 av Java, så om du sitter på en äldre version av det tycker jag verkligen att du ska uppdatera! Det har hänt en hel del sen 1.4 (och även 1.5) :-)

Om du vill läsa mer om autoboxing står det lite intressant här: http://download.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html

Markera även gärna tråden som löst. :-)

Prime_66Medlem sedan aug. 2004296 inlägg
#6

Du en annan snabb fråga bara..jag ska även skapa dokumention med javadoc. NU blir mina svenska kommentarer typ: "Klass som rŠknar ut medelvŠrdet av tal som skrivs in via tangetbordet " dvs å,ö,ä blir knas. Nått med filkodningen?

SPiNMedlem sedan mars 20005 832 inlägg
#7

Du kan använda HTML-entiteterna i dina kommentarer för att visa å, ä och ö.

Ö = Ö
Ä = Ä
Å = Å
ö = ö
ä = ä
å = å

Exempel:
----
/*
 * Den här metoden används för att få fram medeltalet
 */

Det är det enklaste sättet att lösa det på :)

aronMedlem sedan mars 2004487 inlägg
#8

SPiN skrev:

Du kan använda HTML-entiteterna i dina kommentarer för att visa å, ä och ö.

Ö = Ö
Ä = Ä
Å = Å
ö = ö
ä = ä
å = å

Exempel:
----
/*
 * Den här metoden används för att få fram medeltalet
 */

Det är det enklaste sättet att lösa det på :)

Borde vara enklare att använda rätt kodning (t.ex. utf-8). Är bara om man är tvingad till att köra ascii som man kör med de koderna för att escapa öåäÖÅÄ.

SPiNMedlem sedan mars 20005 832 inlägg
#9

Jag hävdar fortfarande att det enklaste är att hantera det med HTML-entiteter. Det spelar nämligen ingen roll om filerna har typen UTF-8, utan man måste specificera det via javadoc-anropet med -charset och -encodingargument, vilket genast blir lite krångligare om man sitter på någon automatiserad typ av dokumenterare.

Genererad på 401 ms · cache AV · v20260730165559-full.f96bc7eb