Permalänk
Medlem

Hjälp med tentafråga i Java

Har en gammal tentauppgift jag inte lyckas få ordning på, den lyder såhär:

Skriv ett program som läser in ett antal heltal till en array (ingen ArrayList). Inläsningen avslutas genom att en nolla skriv in eller när din maxgräns (100) för din array är uppnåd. While-loop ska användas vid inläsning av talen. Ditt program skall sedan skriva ut:

1. antalet inlästa tal
2. alla talen (inte den avslutande nollan)
3. alla tal som är större ön 10 men mindre än 30 (dvs 11-29)

så här skall det se ut i konsolen:

ex: Ange tal (0-avsluta) : 8
Ange tal (0-avsluta) : 2
Ange tal (0-avsluta) : 5

Talen är: 8,2,5
Antalet inlästa tal är: 3
Tal mellan 10 och 30:

hade varit väldigt tacksam för lite hjälp

Permalänk

Istället för att vi serverar dig en lösning vore det kanske bättre om du visade vad du har gjort (eller hur du har tänkt) och vad du inte förstår eller tycker är svårt!

Permalänk
Medlem

Helt rätt! Jag stöter på problem redan där det står att jag skall utföra inläsningen till arrayen med en while-loop. Jag har lyckats göra det med en for loop som i exemplet nedan, men förstår inte hur jag ska göra med en while loop samt att en nolla skall avsluta det hela.

import java.util.Scanner;
public class dasda{

public static void main (string[]args ){
Scanner scan = new Scanner (System.in);
int tal = 0;
int summa = 0;
int [] list = new int [100];

system.out.println ("Ange talen:");

for (int i = 0; i<100; i++) {
system.out.print("Ange tal:"+(i+1));
tal= Scan.nextint();
list [i]=tal;
}
for (int i =0; i<list.length;i++) {
summa +=list[i];

}

for (int i =0; i<list.lenght;i++){
system.out.println ("talen är"+list[i]);
}

Permalänk
Skrivet av coffey:

Helt rätt! Jag stöter på problem redan där det står att jag skall utföra inläsningen till arrayen med en while-loop. Jag har lyckats göra det med en for loop som i exemplet nedan, men förstår inte hur jag ska göra med en while loop samt att en nolla skall avsluta det hela.

import java.util.Scanner;
public class dasda{

public static void main (string[]args ){
Scanner scan = new Scanner (System.in);
int tal = 0;
int summa = 0;
int [] list = new int [100];

system.out.println ("Ange talen:");

for (int i = 0; i<100; i++) {
system.out.print("Ange tal:"+(i+1));
tal= Scan.nextint();
list [i]=tal;
}
for (int i =0; i<list.length;i++) {
summa +=list[i];

}

for (int i =0; i<list.lenght;i++){
system.out.println ("talen är"+list[i]);
}

Det ser ut som att du är på rätt väg. Förhoppningsvis vet du hur en while loop fungerar, en while loop är en loop som repeterar så länge det givna uttrycket är sant. Vilket uttryck borde man kontrollera? Uppgiften säger att användaren ska kunna mata in 100 tal eller avsluta innan genom att mata in 0, dvs det finns två villkor som måste kontrolleras, antingen att användaren har matat in 100 tal eller talet 0. Detta innebär att vi måste ha en variabel som räknar antalet inmatningar och en annan variabel för värdet som matats in.

När det gäller det sista, att printa talen mellan 10 och 30 så görs detta helt enkelt med att göra två if satser som undersöker ett tal i vektorn för att avgöra om det ska printas ut eller ej.

Här har du en lösning som jag tog fram snabbt:

public static void main(String args[]) { int count = 0; int[] numbers = new int[100]; Scanner scan = new Scanner(System.in); while (count < 100) { System.out.println("Ange tal (0-avsluta)"); int value = scan.nextInt(); if (value == 0) break; numbers[count++] = value; } System.out.print("Talen är : "); for (int i = 0; i < count; i++) System.out.print(numbers[i] + " "); System.out.println("\nAntalet inlästa tal : " + count); System.out.println("Tal mellan 10 och 30:"); for (int i = 0; i < count; i++) { if (numbers[i] > 10 && numbers[i] < 30) System.out.print(numbers[i] + " "); } }

Notera att uppgiften kan lösas på många olika sätt och detta är enbart ett förslag. Då jag själv har rättat tentor rekommenderar jag dig att verkligen lära dig grundera väl och inte fokusera för mycket på hur lösningarna i facit ser ut - det är väldigt lätt att folk lurar sig själva genom att studera facit för mycket enbart för att på tentan inse att de inte förstår uppgifterna för att de skiljer sig från extentorna! Lär dig att förstå problemet, inte svaret

Permalänk
Medlem

Jag tackar så mycket för hjälpen! Speciellt för rekommendationen då jag fokuserat lite väl mycket på facit.