Archief - [PROG]JAVA Character.parsechar

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.

truifel

Legacy Member
hallo,

ik ben een beginneling in Java en dit doe ik zo 2uurtjes in de week met school maar we gaan echt traag enzo vooruit dus kben redelijk noobish erin. Nu verveel ik me een beetje en ben ik eens beginnen bladeren in die cursus en wat verder gedaan met de 'leerstof'. Nu kom ik op de pagina met 'de switch-opdracht'. Al goed en wel. Ik lees da, begrijp da,...

Op het einde staat er een oefening:

Maak een meerkeuzevraag met 4 mogelijkheden en zrg ervoor dat de computer gepaste commentaar geeft als je met a, b, c of d kiest.

Nuja, ik begon daaraan en dit is hetgeen ik nu heb:

Code:
import javax.swing.*;
class Blaat {
	public static void main(String[]args){
		
	char dag;
	dag = Character.parseChar(JOptionPane.showInputDialog(null,"geef je antwoord:"));

	switch(dag) {
		case 'a': System.out.println("blaat1");break;
		case 'b': System.out.println("blaat2");break;
		case 'c': System.out.println("blaat3");break;
                case 'd': System.out.println("blaat4");break;
		default: System.out.println("ongeldig antwoord");break;

		}
	}
}

nu geeft hij telkens een fout:

Code:
--------------------Configuration: <Default>--------------------
C:\Documents and Settings\Truifel\Desktop\blaat.java:6: cannot find symbol
symbol  : method parseChar(java.lang.String)
location: class java.lang.Character
        dag = Character.parseChar(JOptionPane.showInputDialog(null,"geef je antwoord:"));
                       ^                  
1 error

Process completed.

-------------------------------------------------------------------

Ik dacht dat het was omdat Character.parseChar niet bestond maar na een googlesearch te doen, zag ik dat het tog gebruikt werd in verschillende scripts. toen zei ik: ik zal het eens aan mijn neef vragen, die heeft nog java gehad in zijn hogere studies, mss weet die het. We hebben er beide ons hoofd op zitten breken en ik vind dus mijn fout maar niet.

Het is dus een lange uitleg om eigenlijk gewoon te vragen hoe ik die String omzet in een char. (in de cursus staat dat String en double,... niet mogen genomen worden als type). Enja, ik heb het ook al geprobeerd dat ik het er gewoon inzette als String en dat lukt dus ook niet.

Mvg,
Truifel

agent #2

Legacy Member
Probeer het anders zo eens:

Code:
import javax.swing.*;
class Blaat {
	public static void main(String[]args){
		
	char dag[]=JOptionPane.showInputDialog(null,"geef je antwoord:").toCharArray();

	switch(dag[0]) {
		case 'a': System.out.println("blaat1");break;
		case 'b': System.out.println("blaat2");break;
		case 'c': System.out.println("blaat3");break;
                case 'd': System.out.println("blaat4");break;
		default: System.out.println("ongeldig antwoord");break;

		}
	}
}

truifel

Legacy Member
agent #2 zei:
Probeer het anders zo eens:

Code:
import javax.swing.*;
class Blaat {
	public static void main(String[]args){
		
	char dag[]=JOptionPane.showInputDialog(null,"geef je antwoord:").toCharArray();

	switch(dag[0]) {
		case 'a': System.out.println("blaat1");break;
		case 'b': System.out.println("blaat2");break;
		case 'c': System.out.println("blaat3");break;
                case 'd': System.out.println("blaat4");break;
		default: System.out.println("ongeldig antwoord");break;

		}
	}
}


Dank u voor de hulp, maar als je zo vriendelijk zo willen zijn, zou je eens willen uitleggen wrm je die [] na dag moet gebruiken, wat toCharArray() betekent en wrm je dan bij de switch een 0 tussen de [] moet zetten.

Mvg,
Truifel

agent #2

Legacy Member
die [] betekenen gewoon dat je een array maakt. Een array start altijd op de possitie 0. Dus de eerste possitie (waar je element staat) is dag[0].

truifel

Legacy Member
agent #2 zei:
die [] betekenen gewoon dat je een array maakt. Een array start altijd op de possitie 0. Dus de eerste possitie (waar je element staat) is dag[0].

dank je wel voor het helpen!

truifel

Legacy Member
nu heb ik nog een vraag:

Code:
class Alfabetkl {
	public static void main(String[]args) {
	for (int alfabetkl = 0 ; alfabetkl < 27 ; alfabetkl++) {
             case 1:System.out.println("a");break;
			case 2:System.out.println("b");break;
			case 3:System.out.println("c");break;
			case 4:System.out.println("d");break;			
			case 5:System.out.println("e");break;			
			case 6:System.out.println("f");break;			
			case 7:System.out.println("g");break;			
			case 8:System.out.println("h");break;			
			case 9:System.out.println("i");break;			
			case 10:System.out.println("j");break;			
			case 11:System.out.println("k");break;			
			case 12:System.out.println("l");break;			
			case 13:System.out.println("m");break;			
			case 14:System.out.println("n");break;			
			case 15:System.out.println("o");break;
                        case 16:System.out.println("p");break;			
			case 17:System.out.println("q");break;			
			case 18:System.out.println("r");break;			
			case 19:System.out.println("s");break;			
			case 20:System.out.println("t");break;			
			case 21:System.out.println("u");break;			
			case 22:System.out.println("v");break;			
			case 23:System.out.println("w");break;
			case 24:System.out.println("x");break;			
			case 25:System.out.println("y");break;			
			case 26:System.out.println("z");break;

kun je daarvoor zorgen dat er 0.25 sec tussen elke case zit ? Dat ze niet direct na elkaar op het scherm verschijnen.

jodeman

Legacy Member
Ik zou het zo doen, array van chars in alfabet, dan elk char printen.
Als je zo in informatica terugkomende patronen ziet is het meestal geen goede oplossing, zoals al uw System.out.println's. Bij die case dat je gebruikt hoort ook altijd een switch. Die switch kun je alleen laten werken met primitieve datatypes in java.
Uw for lus doet ook teveel getallen. Vergeet niet dat je vanaf 0 begint te tellen, dus voor 26 getallen moet je een variabele t.e.m. 25 laten itereren.

Programma even doen wachten is met Thread.sleep(250); 250 is milliseconden. Altijd try catch errond (compiler verplicht).

Code:
public class Alfabetkl {
	public static void main(String[]args) {
		char[] alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 
				'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
		
		for (int i = 0 ; i < alphabet.length; i++) {
			System.out.println(alphabet[i]);
			try {
				Thread.sleep(250);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

Kn0t

Legacy Member
De array is zelfs niet nodig. Als je de getallen van 1 tot 100 wilt printen dan ga je die toch ook niet eerst in een array steken?
Code:
		for (char c = 'a' ; c <= 'z'; c++) {
			System.out.println(c);
			try {
				Thread.sleep(250);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

truifel

Legacy Member
Kn0t zei:
De array is zelfs niet nodig. Als je de getallen van 1 tot 100 wilt printen dan ga je die toch ook niet eerst in een array steken?
Code:
		for (char c = 'a' ; c <= 'z'; c++) {
			System.out.println(c);
			try {
				Thread.sleep(250);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

dank u, is inderdaag veel eenvoudiger dan het voorgaande :). Kwist nie da ge da kon (letters ++ doen)

WHiSPy

Legacy Member
truifel zei:
dank u, is inderdaag veel eenvoudiger dan het voorgaande :). Kwist nie da ge da kon (letters ++ doen)

Interne representatie van 'n char is sowieso 'n integer.

jodeman

Legacy Member
Kn0t zei:
De array is zelfs niet nodig. Als je de getallen van 1 tot 100 wilt printen dan ga je die toch ook niet eerst in een array steken?
Code:
		for (char c = 'a' ; c <= 'z'; c++) {
			System.out.println(c);
			try {
				Thread.sleep(250);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

Wist ik niet

killgore

Legacy Member
Messias. zei:
In Java misschien (Unicode, dunno), maar meestal zijn het gewoon bytes (ASCII). :)

ik denk dat whispy gewoon bedoelt dat het getallen zijn waarop je perfect arithmetische operatoren kan loslaten.

Die code gaat in C++ ook hoor ;).
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