Just nu i M3-nätverket
Gå till innehåll

hjälp?


__Flisan

Rekommendera Poster

Jag sitter och ska göra ett program som ska läsa in ett antal flytal genom tangentbordet. Dvs man ska kunna välja antal flytal för att sedan kunna skriva in x antal flyttal , som sedan ska beräknas med max min och medelvärde. Men något blir fel med arrayen. Någon som kan kika och kanske ser vad som är fel?

 

 

public class 5 {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

 

 

int flyttal=0;

float tal, summa = 0, störst = Integer.MIN_VALUE;

{

System.out.println("Skriv in antal heltal som arrayen ska innehålla:");

tal = scan.nextInt();

 

System.out.println("Skriv in antal +flyttal");

flyttal= scan.nextInt();

 

float[] antal= new float["flyttal"];

 

 

for (float i = 1; i <= flyttal; i++)

{

 

summa += flyttal;

 

if (flyttal > störst)

störst = flyttal;

}

 

System.out.println();

 

System.out.println("Största talet: " + störst);

System.out.println("Medelvärdet: " + summa / 5.0);

System.out.println("Summa:" + summa);

}

}}

 

 

Länk till kommentar
Dela på andra webbplatser

float[] antal= new float["flyttal"];

"flyttal" är en sträng och inte ett tal.

 

Du läser in till en variabel tal som du aldrig använder.

 

Du läser endast in ett flyttal.

 

Länk till kommentar
Dela på andra webbplatser

okej

 

Men hur är det meningen att jag ska göra då? är det :

 

 

float[] antal= new float["flyttal"]; som är fel i koden?

 

Det är en skoluppgift jag gör så en liten hint på rätt väg till hjälp skulle vara fint.

 

//Annica

 

Länk till kommentar
Dela på andra webbplatser

Ta bort citatecknen så blir just den raden bättre. Fast varför ska du spara alla talen överhuvudtaget? Det verkar itne finns någon poäng med det.

 

Den kod du har för att läsa in de enstaka talen måste också ligga inne i "loopen" som börjar med "for".

 

Loopvariabeln "i" ska vara av typen int, inte float.

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Du ska ju läsa in x antal flyttal (där x är det inmatade värdet på tal), så du måste skapa en loop där du lägger din inmatning. Deklarationen av arrayen lägger du innan denna loop.

 

Ändra de här raderna i din kod:

System.out.println("Skriv in antal +flyttal");
flyttal= scan.nextInt();

float[] antal= new float["flyttal"];

 

till

 

float[] antal= new float[tal];
for (int i=1;i<=tal;i++) {
antal[i]= scan.nextInt();
}

 

Loopen som hämtar ut största värdet:

for (int i = 1; i <= tal; i++)
{
summa += antal[i];
if (antal[i] > storst) storst = antal[i];
}

System.out.println("Största talet: " + storst);
System.out.println("Medelvärdet: " + summa / tal);
System.out.println("Summa:" + summa);

 

P.S Ändrade störst till storst. Vet inte om Java accepterar å,ä,ö, men jag gillar inte att dessa används i variabelnamn ;)

 

[inlägget ändrat 2006-03-14 08:58:29 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

fast det ligger kvar ett fel ändå?

 

Jag kör koden och skriver in x antal heltal som arrayen ska innhålla men då jag ska skriva in talen som jag valt antal på så blir det ju galet.

 

Antar att felet ligger i den här kodsnutten.

 

System.out.println("Skriv in antal heltal som arrayen ska innehålla:");

tal= scan.nextInt();

 

så här ser koden ut efter diverse ändringar:

 

public class Lab05 {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in); System.out.println("Skriv in antal heltal som arrayen ska innehålla:");

tal= scan.nextInt();

 

 

 

 

int flyttal=0;

float tal, summa = 0, störst = Integer.MIN_VALUE;

{

System.out.println("Skriv in " +"flyttal");

float[] antal= new float[flyttal];

for (int i=1;i<=tal;i++) {

antal= scan.nextInt();

}

 

 

 

for (int i = 1; i <= tal; i++) {

summa += antal;

if (antal > störst) störst = antal;

 

 

 

System.out.println();

 

System.out.println("Största talet: " + störst);

System.out.println("Medelvärdet: " + summa / 5.0);

System.out.println("Summa:" + summa);

}

}

}}

 

 

Länk till kommentar
Dela på andra webbplatser

Du använder inte 'tal' för att specificera längden på antal.

 

antal= scan.nextInt();

Skulle du inte läsa in flyttal här och inte integers?

 

 

Länk till kommentar
Dela på andra webbplatser

Jo det stämmer så bra. Inte undra på att det har blivit fel då.

 

ska försöka mig på att få till det rätt här nu.

 

//Annica

 

Länk till kommentar
Dela på andra webbplatser

Knäck nej jag får helt enkelt inte det är funka.

 

Det fungerar tills det är dags att skriva in flyttalen, men sen går allt snett!

 

suck

 

Länk till kommentar
Dela på andra webbplatser

Hur gör jag för att istället läsa in flyttal?

 

antal= scan.nextInt();

 

 

har försökt ett antal varianter men det blir inte så lätt när man inte riktigt förstår hur man ska göra.

 

Kan det bli rätt om jag gör så här:

 

float fl = Float.parseFloat(scan.next());

 

eller kanske så här?

 

float f = scan.nextFloat( );

 

//Annica

 

[inlägget ändrat 2006-03-14 22:03:09 av __Flisan]

[inlägget ändrat 2006-03-14 22:15:13 av __Flisan]

Länk till kommentar
Dela på andra webbplatser

Tack

 

Det löste sig till slut efter många timmars klurande .

 

hälsningar

 

Annica

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...