Java nybegynder (hjælp søges)

Tags:    java

Hej jeg har et problem med et program jeg prøver at lave. Det er meget simpelt og skulle udskrive primtal i en uendelighed, men i stedet slutter programmet efter få sekunder og siger "run succesful" uden at give mig et eneste primtal.
Jeg har kopieret programmet ind i en pastebin:
http://pastebin.com/XuNuY9DG

På forhånd tak :)



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Nej det vil den ikke fordi c er stadig 0. Den inderste løkke vil kun køre så længe c er noget andet end 0 hvilket den når tidligt og derfor aldrig ændrer sig. Dvs. koden som ændrer c bliver aldrig udført efter at c = 0 og derfor kan c ikke ændre sig. Du kan eventuelt sætte c til 1 i den første while.



Du sætter z = 5 og lader løkken køre så længe z er større end 5. Men du gør aldrig z mindre.

På et tidspunkt overflower den og løkken stopper.

Den inderst løkke vil mange gange afslutte uden at skrive den fandt et primtal fordi c = 0 godt kan ske selvom x ikke er 1.



Indlæg senest redigeret d. 27.10.2011 18:37 af Bruger #14645
Hej, jeg tror ikke så meget det er din kode, den er galt med.. Men mere din algoritme, har ændret lidt på den, og har lavet, et lille hurtigt program, der ca. gør hvad du beder det om, plus at det gemmer de forrige primtal i en arrayliste.. Men anyways her er koden :)


Fold kodeboks ind/udJava kode 




Du sætter z = 5 og lader løkken køre så længe z er større end 5. Men du gør aldrig z mindre.

På et tidspunkt overflower den og løkken stopper.

Den inderst løkke vil mange gange afslutte uden at skrive den fandt et primtal fordi c = 0 godt kan ske selvom x ikke er 1.


Ja, jeg ved godt den vil overflowe på et tidspunkt, men burde den ikke i det mindste give mig et primtal inden?

Og ja, jeg ved godt at den inderste løkke vil afslutte mange gange uden at udskrive et tal, og det er jo meningen, for hvis c=0 er det tal den inderste løkke er i gang med at undersøge jo netop ikke noget primtal og derfor starter den store løkke med det næste tal der er 1 større end det forrige :)

Hej, jeg tror ikke så meget det er din kode, den er galt med.. Men mere din algoritme, har ændret lidt på den, og har lavet, et lille hurtigt program, der ca. gør hvad du beder det om, plus at det gemmer de forrige primtal i en arrayliste.. Men anyways her er koden :)


Fold kodeboks ind/udJava kode 


Mange tak for det :) men jeg skal ikke rigtig bruge programmet til noget, det er mere bare et forsøg for at se om jeg kan få det til at virke, som en øvelse for mig. Da jeg ikke forstår din kode hjælper den mig ikke meget :P men ellers tak :D





c = 100;
z++ så er z = 6;
x når 3 i den inderste løkke. Så bliver c = 0;

c bliver aldrig ændret igen og den inderste løkke vil aldrig køre mere og intet tal udskrives.



c = 100;
z++ så er z = 6;
x når 3 i den inderste løkke. Så bliver c = 0;

c bliver aldrig ændret igen og den inderste løkke vil aldrig køre mere og intet tal udskrives.


Det forstår jeg ikke hvorfor :O når c bliver nul som du siger og den inderste løkke slutter vil den yderste løkke så ikke bare starte forfra og ændre z og x og derefter begynde på den inderste løkke igen?



Nej det vil den ikke fordi c er stadig 0. Den inderste løkke vil kun køre så længe c er noget andet end 0 hvilket den når tidligt og derfor aldrig ændrer sig. Dvs. koden som ændrer c bliver aldrig udført efter at c = 0 og derfor kan c ikke ændre sig. Du kan eventuelt sætte c til 1 i den første while.


Nååå jo, selvfølgelig :D tænk at jeg ikke havde gennemskuet det. Mange, mange tak :)



t