Java: Odd numbers

Tags:    programmering

Hej jeg har et problem med en kode:

Man skal kunne indtaste et heltal og så skal den printe alle uligenumre ud, ned til 0 dvs. 1.
Dette virker dog ikke:

//Kode starter:
public static void main(String[] args)
{

Scanner scan = new Scanner(System.in);

System.out.println("Indtast et possitivt heltal: ");

int heltal = scan.nextInt();

while (heltal %2!= 0)
{
System.out.println(heltal);
heltal--;
}
}



som datamatiker studerende burde det vel være indlysende at når du trækker 1 fra et ulige tal får du et lige tal.

her er pseudo kode:

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 23.02.2008 22:50 af Bruger #5620
jeg er 1.sem-studerende ;)

Og tak for svaret.. men ved så ikke hvor du ville minuse en henne.. jeg kan ihvertfald ikke lige få det til at virke..



ikke en haj til java men vil tro ud fra det du har at noget i retning af:

Scanner scan = new Scanner(System.in);

System.out.println("Indtast et possitivt heltal: ");
int heltal = scan.nextInt();
if(heltal%2==0){heltal--;}
while (heltal>0)
{
System.out.println(heltal);
heltal=heltal-2;
}



Indlæg senest redigeret d. 24.02.2008 12:25 af Bruger #5620
Du er ihvertfald min haj for det virkede :)
Men forstår altså ikke helt logikken.. og specielt ikke i if sætningen, for jeg havde sat den "uendelig--" ned i while løkken.. og hvad gør modulus2? troede den sprang to ned, men det gør du nede i whileløkken nu..



modulus 2 returne 0 på heltal og 1 på uligetal.

logikken er simpel nok test om det tal du har er lige hvis det er træk 1 fra så har du et ulige tal, så længe tallet er størrer end 0, udskriv det og træk så 2 fra det, 2 trukket fra et uligetal giver så det næste uligetal i rækken.

og det her "var--;" er ikke uendelig er kort hånd for at trække 1 fra var. plus det kan give hurtigere compile kode sikkert.



Indlæg senest redigeret d. 24.02.2008 18:28 af Bruger #5620
t