Sitter fast med en skoluppgift!

Trädvy Permalänk
Medlem
Registrerad
Feb 2016

Sitter fast med en skoluppgift!

Uppgiften lyder såhär:

Metoden "heltal" tar emot ett heltal (kan vara ett negativt heltal, 0, eller positivt heltal) och skriver ut alla heltal mellan och inklusive 0 och detta heltal.

metoden "main" matar in ett heltal och anropar metoden "heltal" med det inmatade värdet som argument.

skapa ett program som består av metoden "main" och metoden "heltal".

problemet: när jag skriver t.ex " -5, så skriver den inte ut något mer än "-5", hur använder jag en loop för att få det att fungera?
finns det någonstans jag kan läsa hur man gör så länka gärna!

tack i för hand!

Kod hittils:

package metoder; import java.util.Scanner; public class Övning8 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Skriv ett heltal: "); int n; n = in.nextInt(); heltal(n); } public static void heltal(int n) { for (int i = 0; i <= n; i++) { System.out.println(i); } } }

Trädvy Permalänk
Medlem
Registrerad
Apr 2009
Skrivet av NintendocatTM:

Uppgiften lyder såhär:

Metoden "heltal" tar emot ett heltal (kan vara ett negativt heltal, 0, eller positivt heltal) och skriver ut alla heltal mellan och inklusive 0 och detta heltal.

metoden "main" matar in ett heltal och anropar metoden "heltal" med det inmatade värdet som argument.

skapa ett program som består av metoden "main" och metoden "heltal".

problemet: när jag skriver t.ex " -5, så skriver den inte ut något mer än "-5", hur använder jag en loop för att få det att fungera?
finns det någonstans jag kan läsa hur man gör så länka gärna!

tack i för hand!

Kod hittils:

package metoder;

import java.util.Scanner;

public class Övning8 {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);

System.out.println("Skriv ett heltal: ");

int n;
n = in.nextInt();
heltal(n);

}

public static void heltal(int n) {

for (int i = 0; i <= n; i++) {

System.out.println(i);

}

}

}

Din loop går ju från 0 till och med talet n. Om du skriver in ett negativt tal som n så börjar din loop ju på 0 och sedan kollar den, är 0 <= -5. svaret på det är ju nej.

Tänk till exempel på hur du skulle göra om du bara ska skriva en funktion som fungerar för negativa tal.

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Apr 2009

Din kod körs bara en gång eftersom n == -5 vilket är mindre än 0.

En enkel lösning är att göra två olika loopar, en för om talet är större eller lika med 0 och en för om talet är mindre än 0. På så sätt kan du alltid loopa mot 0, antingen: 5,4,3,2,1,0 eller -5,-4,-3,-2,-1,0.

Trädvy Permalänk
Medlem
Plats
Karlstad
Registrerad
Nov 2010

Testa:
for (int i = 0; i <= abs(n); i++) {

Och se vad som händer..
http://www.tutorialspoint.com/java/number_abs.htm

Nu har jag ej skummat igenom din kod så noggrant, men en sådan lösning ovanför verkar vettig.Du får sedan ändra utskriftfunktion till typ
System.out.println(n-i);

Nå det är bara att labba på..

i7 7700 & Ryzen 1800X. Båda har 64GB ram, 500 GB 960 Evo m.2. Grafikkort är något jag hittade i en container..

Trädvy Permalänk
Medlem
Registrerad
Nov 2011

Ett alternativ är en if-sats först för att kolla om talet är negativt. Utifrån det hade en loop för negativa tal, annars en annan loop för övriga tal.