Citat:
Ursprungligen postat av rahanjam
Saken är den att jag vill ha något undantag som inte tillåter inmatning av "tal i nummer" och "nummer i tal".
bara satt och fantsierade ifall de skulle gå o göra något i form av ascii? E.. Jag vet inte.
Loopen var också en idé som inte funkade
Någon som har en lösning ?
Du kanske menar nummer i namnen, och bokstäver i numren.
Som sagt vet jag inte hur eran Keyboard-klass fungerar, men att kontrollera att en sträng är ett giltigt nummer är rätt enkelt med en exception:
Kod:
try {
String ettNummer = "34";
int numretSomInt = Integer.parseInt(ettNummer);
} catch (NumberFormatException e) {
System.err.println("Felaktigt nummer: " + e.getMessage());
}
Det här fångar upp fel som uppstår vid omvandligen från sträng till int. Problemet är att du även får fel om numret är för stort för en int. En int kan ta nummer mellan -2147483647 och 2147483647, så matar du in 2147483648 som nummer kommer du få NumberFormatException.
Du kan förstås ta en long istället som klarar tal upp till 9223372036854775807. Ska väl egentligen inte vara några problem, bara man är medveten om att det kan inträffa.
Angående att det bara är bokstäver i en sträng så kan du använda ASCII som du tänkte. Bara att hämta ut ASCII-värdet och kontrollera så att det är en bokstav.
Här är ett litet program som skriver ut ASCII-numren:
Kod:
public class ASCIINumbers{
public static void main(String[] args) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyzÅÄÖåäö";
for(int i = 0; i < alphabet.length(); i++){
System.out.println((int)alphabet.charAt(i));
}
}
}
Som synes skrev jag de svenska tecken sist för de följer inte numren. Så här är numren för alfabetet i ASCII:
Kod:
A-Z -> 65-96
a-z -> 97-122
å -> 229
ä -> 228
ö -> 246
Å -> 197
Ä -> 196
Ö -> 214
Så det är bara att loopa över alla bokstäver (som i exemplet ovan) och om något tecken har ett annat ASCII-värde än bokstav, så är det felaktigt.