Page 1 of 2 12 Last
  1. #1
    VanHoutte's Avatar
    Registered
    11/04/10
    Location
    Oudenaarde
    Posts
    79
    iTrader
    14 (100%)
    Mentioned
    0 Post(s)

    JAVA alleen letters ingeven

    Hoi,

    ik heb een project voor school en je moet je naam ingeven maar je mag enkel letters ingeven. Ik heb me al dood gegooglet maar ik kan echt niets vinden!

    dus de bedoeling is als ik "a1eza23" zou ingeven zou mijn console moeten zeggen je mag enkel letters ingeven en dan zou hij mijn naam gewoon opnieuw moeten vragen tot het juist is.

    Mathias


    EDIT: na lang programmeren heb ik zelf iets geschreven.
    Het is niet echt goed geprogrammeerd maar het werkt toch ^^

    Code:
    public static void main(String[] args)
            {
                   Scanner input = new Scanner(System.in); 
                   boolean geldig = false;
                   String test=null;
                   
     			   while (! geldig)
     		       { 	
     				   int teller=0;
     				    System.out.print("geef naam in: ");
     		            System.out.flush(); 
     		             
     		            	  test = input.next();
     		            	  for(int i=0; i<test.length(); i++)
     		                  {
     		                       
    	 		                
    	 		        	    if(Character.isLetter(test.charAt(i)))
    	 		        	    {
    	 		        		  teller++;
    	 		        	    }
    	 		        	  
     		                  }
     		            	  
     		            	  System.out.print(teller+"\n"+test.length()+"\n");
    	 		        	  if( teller == test.length())
    	 		        	  {
    	 		        		  geldig = true; // uit de lus! 
    	 		        	  }
    	 		        	  else
    	 		        	  {
    	 		        		 System.out.println("Je mag alleen een letters ingeven!");
    	 		        		 input.nextLine();
    	 		        	  }
     		        	
                    
     		       }
    Last edited by VanHoutte; 22-04-2010 at 23:53. Reason: oplossing gevonden
    no votes  

  2. #2
    Huxley's Avatar
    Registered
    21/01/10
    Location
    Gent
    Posts
    3,535
    iTrader
    0
    Mentioned
    0 Post(s)
    zoek eens naar reguliere expressies op google. Daar vind je info over genoeg.
    no votes  

  3. #3
    VanHoutte's Avatar
    Registered
    11/04/10
    Location
    Oudenaarde
    Posts
    79
    iTrader
    14 (100%)
    Mentioned
    0 Post(s)
    Quote Originally Posted by Huxley View Post
    This quote is hidden because you are ignoring this member. Show
    zoek eens naar reguliere expressies op google. Daar vind je info over genoeg.
    bedankt voor de snelle reply maar vind dat mijn code iets gemakkelijker is
    no votes  

  4. #4
    azerty_2006's Avatar
    Registered
    14/01/06
    Location
    Ingelmunster
    Posts
    497
    iTrader
    0
    Mentioned
    0 Post(s)
    Uw code is ook sneller dan een regex lijkt me.
    Zelf heb ik totaal geen ervaring met Java maar persoonlijk zou ik zoiets doen:

    Code:
    public static void main(String[] args)
    {
    	Scanner input = new Scanner(System.in);
    	boolean geldig = true;
    	String test=null;
    
    	while (true)
    	{
    		System.out.print("geef naam in: ");
    		System.out.flush();
    
    		test = input.next();
    		
    		for (int i = 0; i < test.length(); i++)
    		{
    			if(!Character.isLetter(test.charAt(i)))
    			{
    				geldig = false;
    				break;
    			}
    		}
    
    		if (geldig) return;
    		
    		System.out.println("Je mag alleen een letters ingeven!");
    		input.nextLine();
    	}
    }
    Waarschijnlijk een duizendste van een seconde sneller
    no votes  

  5. #5
    pietje666's Avatar
    Registered
    18/12/07
    Location
    Wijnegem
    Posts
    1,158
    iTrader
    3 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/5
    Code:
    public void test(String str) {
    
            char[] chr = str.toCharArray();
            int i = 0;
            boolean found = false;
            while ( i < chr.length && !found)
            {
               char c = chr[i];
               if((c < 'A' || c > 'Z') && (c < 'a' || c >'z'))
               {
                    System.out.println("enkel letters");
                    found = true;
               }
               i++;
            }        
        }
    dacht dat we ooit is iets geleerd hadden om ineens te zoeken van 'a'-'z' maar werkt niet dan trekt hij de ene waarde van de andere af
    Last edited by pietje666; 22-04-2010 at 03:21.
    no votes  

  6. #6
    Scrimrage's Avatar
    Registered
    02/04/09
    Location
    leuven
    Posts
    1,109
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    1/99
    Code:
     public boolean hasNumber(String s) {
      for (int j = 0;j < s.length();j++) {
        if (!Character.isLetter(s.charAt(j))) {
          return false;
        }
      }
      return true;
    }
    werkt da nie?
    Last edited by Scrimrage; 22-04-2010 at 13:31.
    no votes  

  7. #7

    Registered
    12/12/03
    Posts
    1,802
    iTrader
    24 (100%)
    Mentioned
    0 Post(s)
    Reputation
    3/480
    Dit is iets dat in 99% van de gevallen opgelost zou worden met een regular expression. Als ge een regex schrijft, voorzie dan gewoon commentaar want 2 dagen later weet ge al totaal niet meer wat ze betekenen (wat dan meteen ook het grootste nadeel van een regular expression is).
    no votes  

  8. #8
    Moto's Avatar
    Registered
    17/07/02
    Location
    Wilrijk
    Posts
    1,994
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    9/16
    Dit probleem is veel te simpel om zoiets als regex te gaan gebruiken. regex is iets voor moeilijke problemen snel qua performance op te lossen
    Niet om simpele dingen waar performance geen belang heeft moeilijker te maken (qua leesbaarheid)
    no votes  

  9. #9
    VanHoutte's Avatar
    Registered
    11/04/10
    Location
    Oudenaarde
    Posts
    79
    iTrader
    14 (100%)
    Mentioned
    0 Post(s)
    Quote Originally Posted by azerty_2006 View Post
    This quote is hidden because you are ignoring this member. Show
    Uw code is ook sneller dan een regex lijkt me.
    Zelf heb ik totaal geen ervaring met Java maar persoonlijk zou ik zoiets doen:

    Code:
    public static void main(String[] args)
    {
    	Scanner input = new Scanner(System.in);
    	boolean geldig = true;
    	String test=null;
    
    	while (true)
    	{
    		System.out.print("geef naam in: ");
    		System.out.flush();
    
    		test = input.next();
    		
    		for (int i = 0; i < test.length(); i++)
    		{
    			if(!Character.isLetter(test.charAt(i)))
    			{
    				geldig = false;
    				break;
    			}
    		}
    
    		if (geldig) return;
    		
    		System.out.println("Je mag alleen een letters ingeven!");
    		input.nextLine();
    	}
    }
    Waarschijnlijk een duizendste van een seconde sneller

    Bedankt,
    ik zal dit eens testen
    aangezien het een project is voor school moet het zo kort mogelijk zijn anders zijn het punten af
    no votes  

  10. #10
    Cycloon's Avatar
    Registered
    18/01/04
    Location
    Melle
    Posts
    10,535
    iTrader
    56 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/102
    Een project quoteren op "zo kort mogelijk" is natuurlijk heel kort door de bocht. Mocht je met een regexp werken dan had je mss 5-6 regels code nodig, maar achter de schermen zitten zeker honderden regels code om je regexp te kunnen verwerken. Volgens mij heb je het dus over efficiëntie (die veel belangrijker is dan korte code schrijven!).
    “In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
    PSN: Cycloon - Final Fantasy XIV: A realm reborn character
    no votes  

  11. #11
    Scrimrage's Avatar
    Registered
    02/04/09
    Location
    leuven
    Posts
    1,109
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    1/99
    kzou dan toch die break eruit doen as het voor school is, aje da bij ons erin zet krijgde een mooie 0 .

    Code:
     boolean bevat = false ;
            for (int j = 0;j < s.length() && bevat == false;j++) {
                if (! Character.isLetter(s.charAt(j))) {
                    bevat = true ;
                }
            }
            return bevat ;
    zou iet dus
    no votes  

  12. #12
    Cycloon's Avatar
    Registered
    18/01/04
    Location
    Melle
    Posts
    10,535
    iTrader
    56 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/102
    Doe het dan in een while lus ipv zo'n dubbele voorwaarde in je for-lus, anders is het verschil met een break te gebruiken minimaal.
    “In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
    PSN: Cycloon - Final Fantasy XIV: A realm reborn character
    no votes  

  13. #13
    VanHoutte's Avatar
    Registered
    11/04/10
    Location
    Oudenaarde
    Posts
    79
    iTrader
    14 (100%)
    Mentioned
    0 Post(s)
    Ik ben nog vergeten te zeggen dat mijn methode een string moet terug geven
    no votes  

  14. #14
    Curahee Q's Avatar
    Registered
    07/12/07
    Location
    Hoogstraten
    Posts
    854
    iTrader
    0
    Mentioned
    0 Post(s)
    @Scrimrage
    Fout gebruik van een for-lus. Een for-lus is bedoeld voor iets waarvan je op voorhand weet hoeveel keer hij deze gaat doorlopen. Zoiets is een typisch geval om met een while-lus op te lossen. Als je bij ons opt school met zoiets afkomt krijg je ook wel een mooi rondje.
    no votes  

  15. #15
    Parnakra's Avatar
    Registered
    15/04/04
    Location
    Izegem
    Posts
    6,095
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    En scholen zijn natuurlijk het epicentrum van correct denken en programmeren.

    Pragmatiek mag en moet meestal voorrang krijgen op arbitraire regels en afspraken.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in