Just nu i M3-nätverket
Jump to content

hjälp?


__Flisan

Recommended Posts

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);

}

}}

 

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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);

}

}

}}

 

 

Link to comment
Share on other sites

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?

 

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...