Prime_66Medlem sedan aug. 2004296 inlägg
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
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
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
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
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
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
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
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
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.