@kalleftw Hej!
Roligt att du har fått upp intresset för programmering. Efter att ha kollat igenom din lösning har jag identifierat några fel och har några funderingar kring dina tankegångar. Vi kan börja uppifrån och ned:
Rad 9: Här har du skapat en array med namnet f med storleken som motsvarar antalet nummer som användaren angett. Varför? Det vore ju otroligt mycket enklare att endast skapa en int där du sedan adderar de värden som användaren skriver in. I resten av programmet används sedan inte denna array på något sätt, vilket innebär att de tal som användaren matar in aldrig sparas i programmet för att sedan kunna användas för att räkna ut medelvärdet.
Rad 10: Din for-loop ser konstig ut. For-loopar ser vanligtvis ut såhär:
for(int i = 0; i < 10; i++){
//Kod som skall exekveras så länge forloopens villkor är giltig
}
Du har med andra ord missat att omsluta innehållet i forloopen med curly brackets {}.
Rad 11: Semikolonet skall bort (läs ovanstående kommentar om rad 10).
Rad 12: Här har du en while-loop som alltid kommer att vara sann. Varför har du inte nyttjat forloopen ovan? Ta bort hela while-loopen då den inte behövs.
Rad 13-15: Den loop med de villkor du har satt behövs inte. Utveckla gärna din tankegång om vad du vill att loopen skall åstadkomma.
Rad 18: antal1 kommer alltid att skrivas över (d.v.s. kommer du aldrig summera alla tal som användaren matar in).
Rad 20: Din double kommer alltid att vara avrundad till närmsta heltal då du dividerat två ints. Du måste först casta ena integern till en double för att få ut en korrekt avrundad double.
Rad 21: Vad är meningen med att använda JOptionPane om resultatet sedan kastas ut i konsolen? Antingen kör du all input/output via console eller all input/output via JOptionPane. Gäller att vara konsekvent
Har säkert missat att kommentera på en hel del, men skulle starkt rekommendera dig att läsa på om loopar, satser, variable scope samt innan du börjar skriva programmet skapar dig en tydligt uppfattning om vad som behöver göras för att nå önskat resultat (ungefär på samma sätt att man skapar en ritning för ett hus innan man börjar bygga det, gör man det i efterhand/under loppets gång blir resultatet oftast kaosartat).
Som en liten bonus har jag här nedan knåpat ihop en lösning som baseras på din kod, men med några modifikationer:
1) Istället för att spara alla värden i en array summerar jag de direkt i for-loopen till en int.
2) While-loopen har helt och håller rykt.
3) If-else, satsen har helt och hållet rykt.
4) Medelvärdet beräknas numera korrekt genom att jag castat en integer till en double (läs på om casting).
5) Resultatet ges nu i for av en JOptionPane.
Som sagt, koden är endast för att demonstrera hur en alternativ lösning skulle kunna se ut, för att bättre illustrera vilka fel som existerade i din kod. Koden kan dock förbättras, t.ex. kontrollerar jag inte input-värdet för antalet tal som skall matas in (detta får du fixa själv). Ta inte koden rakt av, du gör dig bara en björntjänst i längden. Koden är som sagt en hjälp för dig att förstå vilka fel du har gjort. Ta istället tillfället i akt och läs på om allt som jag tipsat dig om, det kommer att underlätta din framtida programmering. Efter att du läst på om ovanstående kan du sätta dig ner och från grunden tänka hur du skall lösa uppgiften, och därefter börja om från början.
Slutligen: Döp alla variabler och skriv all kod på engelska. Dessutom bör du döpa variabler till något vettigt som gör så att man endast genom att kolla på namnet förstår vad det är för något. Exempelvis säger "antal1" inget om variabelns innehåll, och "sum" är rentav missvisande då du där beräknar medelvärdet och inte någon summa (vilket förövrigt också är felaktigt i din kod, då du dividerar antal med antal1 när det i själva verket skall vara tvärt om).
import javax.swing.JOptionPane;
public class Help {
public static void main(String[] args) {
String s = JOptionPane.showInputDialog("Antal heltal?");
int numberOfIntegers = Integer.parseInt(s);
int numberSum = 0;
for (int i = 0; i < numberOfIntegers; i++){
String enteredNumber = JOptionPane.showInputDialog("Nästa heltal");
int currentNumber = Integer.parseInt(enteredNumber);
numberSum += currentNumber;
}
double average = (((double) numberSum)/numberOfIntegers);
JOptionPane.showMessageDialog (null, average, "Medelvärdet", JOptionPane.INFORMATION_MESSAGE);
}
}
Dold text