Permalänk

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

Permalänk
Medlem
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.

Permalänk
Medlem

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.

Permalänk
Inaktiv

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å..

Permalänk

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.