Βοήθεια με break - exit ενός while loop !!

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
mariel19
Δημοσιεύσεις: 49
Εγγραφή: 08 Φεβ 2004 17:13
Τοποθεσία: www.liv.ac.uk

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από mariel19 » 30 Οκτ 2009 02:01

Έχω αυτόν τον κώδικα ... που σχεδόν μου κάνει αυτά που θέλω.. (κι αυτά που ζητάει η άσκηση)

Κώδικας: Επιλογή όλων

import java.util.Scanner;
 
public class isPrime {
	
	
	private static boolean FindPrime(int number) {
		// If number zero or 1 cannot be prime.
		if &#40;number <= 1&#41; return false;
		for &#40;int i = 2; &#40;i * i&#41; <= number; i++&#41;
			if &#40;number % i == 0&#41; return false;
		
		return true;
	&#125;
 
    public static void main&#40;String&#91;&#93; args&#41; &#123;
        while&#40;true&#41; &#123;
        	Scanner scanner = new Scanner&#40;System.in&#41;;
    		System.out.println&#40;"Please enter the first number of the range&#58; "&#41;;
    		int first = scanner.nextInt&#40;&#41;;
    		System.out.println&#40;"Please enter the last number of the range&#58; "&#41;;
    		int last = scanner.nextInt&#40;&#41;;
    		
    		
    		for &#40;int i = first; i <= last; i++&#41; &#123;
    			String result = &#40;FindPrime&#40;i&#41;&#41; ? "prime" &#58; "not a prime";
    			System.out.println&#40;"Number " + i + " is " + result +"."&#41;;   			    	
    			
    			&#125;
    		&#125;
    		 
        &#125;
    		
        
        
    &#125;






Ωστόσο μου λείπουν 2 βασικά πραγματάκια ... και έχει κολλήσει το μυαλό μου και δεν μπορώ να κάνω τα εξής :

1. όταν του δίνω πρώτη τιμή μεγαλύτερη από τη δεύτερη να μου βγάζει ένα μηνυματάκι του τύπου "Number needs to be greater than lower bound" ( και φυσικά να επαναλαμβάνει το loop ώστε να δώσει τα primes)
2. κι όταν κάποια στιγμή, του δώσω lower value 0 να μου δώσει output " Program finishing "...

Μπορεί κάποιος να με βοηθήσει...;; πρέπει να το ολοκληρώσω μέχρι αύριο το πρωί .... :oops:

Ευχαριστώ προκαταβολικά!!

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από virxen75 » 30 Οκτ 2009 02:38

αν κατάλαβα αυτό που θες

ψάχνεις κάτι τέτοιο

Κώδικας: Επιλογή όλων


import java.util.Scanner;
 
public class IsPrime &#123;
   
   
   private static boolean FindPrime&#40;int number&#41; &#123;
      // If number zero or 1 cannot be prime.
      if &#40;number <= 1&#41; return false;
      for &#40;int i = 2; &#40;i * i&#41; <= number; i++&#41;
         if &#40;number % i == 0&#41; return false;
      
      return true;
   &#125;
 
    public static void main&#40;String&#91;&#93; args&#41; &#123;
    	int first,last;
    	boolean finished=false;
    	Scanner scanner = new Scanner&#40;System.in&#41;;
        while&#40;!finished&#41; &#123;
           
           do&#123;
               System.out.println&#40;"Please enter the first number of the range&#58; "&#41;;
               first = scanner.nextInt&#40;&#41;;
               System.out.println&#40;"Please enter the last number of the range&#58; "&#41;;
               last = scanner.nextInt&#40;&#41;;
               if &#40;first>last && last!=0&#41; System.out.println&#40;"Number needs to be greater than lower bound"&#41;;
          &#125;while&#40;first>last && last!=0&#41;;
          if &#40;last==0&#41;&#123;
          	   finished=true;
          	   System.out.println&#40;" Program finishing "&#41;;
          &#125;else&#123;
                for &#40;int i = first; i <= last; i++&#41; &#123;
                    String result = &#40;FindPrime&#40;i&#41;&#41; ? "prime" &#58; "not a prime";
                    System.out.println&#40;"Number " + i + " is " + result +"."&#41;;                   
                &#125;
               &#125;
          &#125;
          
        &#125;
          
       
       
    &#125; 

Άβαταρ μέλους
mariel19
Δημοσιεύσεις: 49
Εγγραφή: 08 Φεβ 2004 17:13
Τοποθεσία: www.liv.ac.uk

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από mariel19 » 30 Οκτ 2009 02:45

μμ... ευχαριστώ ....

αν και στη δοκιμή με 0 input , θέλω να κλείνει αμέσως ...
χωρίς να ζητάει και first value kαι second και μετά να κλείνει ..

φαντάζομαι αντί για if (last==0){

θέλει κάτι άλλο ... :/

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από virxen75 » 30 Οκτ 2009 02:49

αυτό δεν το κατάλαβα
δηλαδή ακόμα και αν το first=0 να τελειώνει το πρόγραμμα?

αυτό δηλαδή?

Κώδικας: Επιλογή όλων


import java.util.Scanner;
 
public class IsPrime &#123;
   
   
   private static boolean FindPrime&#40;int number&#41; &#123;
      // If number zero or 1 cannot be prime.
      if &#40;number <= 1&#41; return false;
      for &#40;int i = 2; &#40;i * i&#41; <= number; i++&#41;
         if &#40;number % i == 0&#41; return false;
      
      return true;
   &#125;
 
    public static void main&#40;String&#91;&#93; args&#41; &#123;
    	int first,last;
    	boolean finished=false;
    	Scanner scanner = new Scanner&#40;System.in&#41;;
        while&#40;!finished&#41; &#123;
           
           do&#123;
               System.out.println&#40;"Please enter the first number of the range&#58; "&#41;;
               first = scanner.nextInt&#40;&#41;;
               last=0;
               if &#40;first!=0&#41;&#123;
               System.out.println&#40;"Please enter the last number of the range&#58; "&#41;;
               last = scanner.nextInt&#40;&#41;;
               &#125;
               if &#40;first>last && last!=0&#41; System.out.println&#40;"Number needs to be greater than lower bound"&#41;;
          &#125;while&#40;first>last && last!=0&#41;;
          if &#40;last==0&#41;&#123;
          	   finished=true;
          	   System.out.println&#40;" Program finishing "&#41;;
          &#125;else&#123;
                for &#40;int i = first; i <= last; i++&#41; &#123;
                    String result = &#40;FindPrime&#40;i&#41;&#41; ? "prime" &#58; "not a prime";
                    System.out.println&#40;"Number " + i + " is " + result +"."&#41;;                   
                &#125;
               &#125;
          &#125;
          
        &#125;
          
       
       
    &#125; 


Άβαταρ μέλους
mariel19
Δημοσιεύσεις: 49
Εγγραφή: 08 Φεβ 2004 17:13
Τοποθεσία: www.liv.ac.uk

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από mariel19 » 30 Οκτ 2009 02:53

Ναι, βασικά ΜΟΝΟ αν το first είναι 0 , να κάνει exit !
(
A! και να προσθέσω κάτι άλλο που ξέχασα ... :hammer:

όταν βάζω π.χ. μια τιμή 9 και μετά δεύτερη τιμή 6 ... και βγάζει το μήνυμα "please input greater value" θέλω ... να μην ξαναρχίζει από αρχή ... αλλά από τη δεύτερη value ... και αν πάλι βάλω π.χ. 8 να πάρω ξανά το μήνυμα και μετά, αφού βάλω τη σωστη τιμή να προχωρήσει ....

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από virxen75 » 30 Οκτ 2009 03:02

αυτό δηλαδή?

Κώδικας: Επιλογή όλων

import java.util.Scanner;
 
public class IsPrime &#123;
   
   
   private static boolean FindPrime&#40;int number&#41; &#123;
      // If number zero or 1 cannot be prime.
      if &#40;number <= 1&#41; return false;
      for &#40;int i = 2; &#40;i * i&#41; <= number; i++&#41;
         if &#40;number % i == 0&#41; return false;
      
      return true;
   &#125;
 
    public static void main&#40;String&#91;&#93; args&#41; &#123;
    	int first=0,last=0;
    	boolean finished=false;
    	Scanner scanner = new Scanner&#40;System.in&#41;;
        while&#40;!finished&#41; &#123;
           
           
               System.out.println&#40;"Please enter the first number of the range&#58; "&#41;;
               first = scanner.nextInt&#40;&#41;;
               do&#123;
               if &#40;first!=0&#41;&#123;
               System.out.println&#40;"Please enter the last number of the range&#58; "&#41;;
               last = scanner.nextInt&#40;&#41;;
               &#125;
               if &#40;first>last && first!=0&#41; System.out.println&#40;"Number needs to be greater than lower bound"&#41;;
          &#125;while&#40;first>last && first!=0&#41;;
          if &#40;first==0&#41;&#123;
          	   finished=true;
          	   System.out.println&#40;" Program finishing "&#41;;
          &#125;else&#123;
                for &#40;int i = first; i <= last; i++&#41; &#123;
                    String result = &#40;FindPrime&#40;i&#41;&#41; ? "prime" &#58; "not a prime";
                    System.out.println&#40;"Number " + i + " is " + result +"."&#41;;                   
                &#125;
               &#125;
          &#125;
          
        &#125;
          
       
       
    &#125; 

Άβαταρ μέλους
mariel19
Δημοσιεύσεις: 49
Εγγραφή: 08 Φεβ 2004 17:13
Τοποθεσία: www.liv.ac.uk

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από mariel19 » 30 Οκτ 2009 03:10

ω ναι ... !! ευχαριστώ ...

Να σε ρωτήσω κάτι ... άλλο..;

Είναι υπερβολή τα τόσα while loops που έχω ... ;
Θα μπορούσα να έχω μικρότερο κώδικα αν χρησιμοποιούσα if statements ... σε ένα while loop μόνο??

Είναι εφικτό αυτό;;

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από virxen75 » 30 Οκτ 2009 03:16

εφόσον χρειάζεσαι την επανάληψη δεν μπορείς να τα αντικαταστήσεις με if


το if εκτελείται μία φορά τα while μέχρι την επιθυμητή συνθήκη πολλές φορές.(;έως και άπειρες ,για πάντα δηλαδή)


εδώ έχεις ένα γενικό while για να εκτελείται ο κώδικας συνέχεια μέχρι το first==0

και ένα do - while μέχρι να δώσει ο χρήστης last>first value

όχι δεν είναι υπερβολή απλώς απαραίτητα!

Άβαταρ μέλους
mariel19
Δημοσιεύσεις: 49
Εγγραφή: 08 Φεβ 2004 17:13
Τοποθεσία: www.liv.ac.uk

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από mariel19 » 30 Οκτ 2009 03:22

σχετικά με το άπειρες γνωρίζω καλά ... χιχιχι ... (είχα μια εμπειρία το απογεύμα προσπαθώντας να γράψω τον κώδικα, μέχρι που crash-αρε το Eclipse...!!!)
Σε ρωτάω, γιατί μου είπανε κάτι τζιμάνια, ότι θα μπορούσα να γράψω τον κώδικα με if - statements και να μην έχω do while...
Απλά θέλω να σιγουρευτώ ότι δεν κάνω κάτι λάθος (γιατί βοήθεια εδώ δεν δίνουν οι άτιμοι ) Στην περιγραφή της άσκησης λέει
καθώς τσεκάρετε για τα prime numbers, σίγουρα θα κάνετε χρήση ενός loop, ωστόσο σκεφτείτε πόσες φορές θα χρειαστεί αυτό το loop να επαναληφθεί ...

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από virxen75 » 30 Οκτ 2009 03:34

Κώδικας: Επιλογή όλων


do&#123;
               if &#40;first!=0&#41;&#123;
               System.out.println&#40;"Please enter the last number of the range&#58; "&#41;;
               last = scanner.nextInt&#40;&#41;;
               &#125;
               if &#40;first>last && first!=0&#41; System.out.println&#40;"Number needs to be greater than lower bound"&#41;;
          &#125;while&#40;first>last && first!=0&#41;; 

αν το πιο πάνω γραφτεί μόνο με if που σου είπανε τότε
δεν γίνεται αυτό που ζήτησες
δηλαδή να ζητάει τον last μέχρι να είναι last>first χωρίς να ζητάει ξανά τον first.
εξαιτίας αυτής της απαίτησης το do-while είναι μονόδρομος.


Υ.Γ. όταν λέει loop μην ξεχνάς ότι και το for είναι και αυτό loop!!!!

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από dva_dev » 30 Οκτ 2009 11:53

Μια απορία μου, επειδή είδα τον κώδικα:

Κώδικας: Επιλογή όλων

if &#40;number <= 1&#41; return false;
Το νούμερο 1 γιατί δεν είναι πρώτος;

Άβαταρ μέλους
mariel19
Δημοσιεύσεις: 49
Εγγραφή: 08 Φεβ 2004 17:13
Τοποθεσία: www.liv.ac.uk

Βοήθεια με break - exit ενός while loop !!

Δημοσίευση από mariel19 » 30 Οκτ 2009 12:23

Η άσκηση ζητάει αυτό εδώ .. :

Να γράψουμε ένα java program το οποίο θα δίνει τa prime number μέσα σε ένα range αριθμών (π.χ. 2 - 20 , 100-110, 500 - 600) . Ως prime number θεωρείτα κάθε αριθμός μεγαλύτερος του 1, ο οποίος διαιρείται μόνο με τον εαυτό του και τη μονάδα και δίνει στρογγυλό αποτέλεσμα....

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης