3 svar
749 visningar
proghelp behöver inte mer hjälp
proghelp 19 – Fd. Medlem
Postad: 7 aug 2020 11:04

Summera tal större eller mindre än ett visst värde, scanner

Hej! Jag kommer inte längre fram i min kod på denna uppgift: 

Indata består av 11 heltal. Det första kallas limit. Därefter ska ytterligare 10 tal läsas in och dessa ska summeras enligt speciella regler. Skriv satser som läser talen och beräknar två summor: dels summan av de tal som är mindre än limit, dels summan av de tal som är större än limit. Tal som är lika med limit ska inte summeras. 

Exempel: Indata
5 3 2 1 4 5 10 7 8 6 9

ska ge utskriften:
Summan av tal < 5 = 10
Summan av tal > 5 = 40

Här är min kod: 

public class TwoSums {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int limit = scan.nextInt();
int s = 0;
int l = 0;

if (limit > scan.nextInt()) {
l = l + scan.nextInt();

} else if (limit < scan.nextInt()){
s = s + scan.nextInt();
}

System.out.println("Summan av tal < " + limit + " = " + s);
System.out.println("Summan av tal > " + limit + " = " + l);
}
}

Jag känner själv att den är bristfällig och har försökt att ändra den genom att lägga till med while (scan.hasNextInt) och for (int i = 0; i <=11; i++) innan min if men det har bara resulterat i ännu mer fel i uppgiften. Bilden visar vilket felmeddelande jag får.

Laguna Online 30713
Postad: 7 aug 2020 11:24

Ja, någon form av loop måste du ha. Det står att det kommer 10 tal efter limit. Då måste du läsa in tio tal till och behandla dem.

Din kod gör inte rätt för ett tal heller, för om första if-satsen inte är sann så kommer den att göra andra if-satsen på ett nytt inläst tal, inte på det du just testade. 

proghelp 19 – Fd. Medlem
Postad: 7 aug 2020 11:28
Laguna skrev:

Ja, någon form av loop måste du ha. Det står att det kommer 10 tal efter limit. Då måste du läsa in tio tal till och behandla dem.

Din kod gör inte rätt för ett tal heller, för om första if-satsen inte är sann så kommer den att göra andra if-satsen på ett nytt inläst tal, inte på det du just testade. 

Tack! Löste det nu. La till en while-loop och därefter deklarerade jag en ny variabel int n = scan.nextInt() som jag använde att jämföra limit med i if satserna. 

airspeeder.atat 1
Postad: 27 okt 2022 16:17

Hej, kan du visa hur hela din lösning blev när den funkade?

Svara
Close