Archief - [PROG][JAVA] Strings & ints

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SMa

Legacy Member
Wat is de simpelste manier om een String op ints te controleren?

Stel:
De gebruiker geeft 6 getallen in, bestaande uit 1 of 2 cijfers, telkens gescheiden door een spatie.
Hoe kan deze String efficient op correcte ingave gecontroleerd worden?

thx

Ice

Legacy Member
String splitten in array of strings dmv van split(' ');
op elk stukje: Integer.parseInt(uwStringstukje);

als ge nooit nen exception krijgt ist goed & anders zat er genen int in uw substring.

Properder manier is om eerst te kijken of in uw substring enkel uit cijfers bestaat.

SMa

Legacy Member
en hoe werkt die split(' ') dan precies?
ik krijg dit: "Cannot find method 'split(char)' in 'String'

Ice

Legacy Member
ow sorry ff verkeerd gelezen, dacht dat je alle ints uit die string wou.

Indien je gewoon wil controleren:
loop door uw chars van uw string en speel wat met de methoden:
isDigit & isWhitespace van de klasse Character.

SMa

Legacy Member
dat zijn nu eens allemaal codes die ik nog niet ken :)
dit neemt de compiler al niet:

Code:
do {
	System.out.print("Geef uw getallen in, telkens met een spatie tussen:\n\t");		// ingave door gebruiker
	ingave = (Stream.readString()).toLowerCase();
	for (byte j = 0; j < ingave.length(); j++) {
		if ( !(ingave.charAt(j)).IsDigit() || !(ingave.charAt(j)).isWhiteSpace) {
			fout = true;
		}
	}			
} while (fout);

hoe dan wel?

Ice

Legacy Member
SMa zei:
dat zijn nu eens allemaal codes die ik nog niet ken :)
dit neemt de compiler al niet:

Code:
do {
	System.out.print("Geef uw getallen in, telkens met een spatie tussen:\n\t");		// ingave door gebruiker
	ingave = (Stream.readString()).toLowerCase();
	for (byte j = 0; j < ingave.length(); j++) {
		if ( !(ingave.charAt(j)).IsDigit() || !(ingave.charAt(j)).isWhiteSpace) {
			fout = true;
		}
	}			
} while (fout);

hoe dan wel?
Character.isDigit(uwChar) (methodes beginnen met een kleine letter)
Character.isWhiteSpace(uwChar) (methodes hebben altijd 2 haakjes :p)

ps. al deze methoden staan beschreven in: http://java.sun.com/j2se/1.5.0/docs/api/

tmagus

Legacy Member
mss best da ge nen ide gebruikt, da gade geen fouten zoals () van methodes vergeten meer maken...

aangezien de ide zal zeggend at het nie kan kloppen...

goede ide is eclips, netbeans...

SMa

Legacy Member
uhu thx
is visual studio ook goed?


En nog een vraag, hoe zou je efficient een array kunnen sorteren van klein naar groot?
stel: { 41 5 23 15 27 33 } naar { 5 15 23 27 33 41 }
Daar zit ik nu ook al een tijdje op te zoeken, en alles dat ik heb zijn gigantische blokken code...

jodeman

Legacy Member
Sorry als de code niet zo goed is ;)

Code:
public class Test {
	public static void main(String[] args) throws IOException {
		InputStreamReader isr = new InputStreamReader(System.in);
	    BufferedReader stdin = new BufferedReader(isr);

	    boolean validInput = false;

	    while(!validInput) {
	    	validInput = true;
	    	System.out.println("Geef de invoer : ");
	    	String input = stdin.readLine();

	    	StringTokenizer st = new StringTokenizer(input," ");

	    	while (st.hasMoreTokens()) {
	    		String part = st.nextToken();

	    		if (!isNumber(part)) {
	    			validInput = false;
	    		}
	    	}
	    }
	}

    private static boolean isNumber(String part) {
		for (int i = 0; i < part.length(); i++) {
			if (!Character.isDigit(part.charAt(i))) {
				return false;
			}
		}
		return true;
	}
}

SMa

Legacy Member
big thx :D

@killgore
algoritmes in woorden :) het enige die nog moest gebeuren is het geschikte algoritme uitzoeken en omzetten naar code

jodeman

Legacy Member
Kijk in de pagina van kn0t, dat is sneller gebeurd :)

dus als ge nen int array van cijfers hebt met uw waarden in gebruik dan : java.util.Arrays.sort(cijfers);
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan