Terve!
Millähän keinolla saisi tietää onko käyttäjän antama syöte (scanner) muotoa int?
Kiitos.
Onko se int
5
673
Vastaukset 5
- ihmettä tarkoitat?
Tarkoitatko:
1) Skannattujen kuvien OCR-prosessointia?
2) scanf-perheen funktiota?
Jos ongelma on Xscanf (fscanf, sscanf, jne.), lue tuntematon merkkijonona, ja sen jälkeen tutki onko ensimmäinen merkki '-', jos on, lisää pointteria joka osoittaa merkkijonoon yhdellä. scanf-funktioita ei tietenkään näe juuri koskaan missään hyvin toteutetussa ohjelmistossa, ilmiselvistä syistä.
#include
#include
int check_number(char * str)
{
/* onko ensimmäinen merkki miinus */
if(*str =='-') str ;
do
{
if(!isdigit(*str)) return 0;
}
while(* str);
return 1;
}
int check_int(char * str)
{
/* tarkastetaan onko numero esitettävissä int-muodossa */
int number;
char buf[20];
number = atoi(str);
sprintf(buf, "%d", number);
if(strcmp(buf, str)==0)
return 1;
return 0;
}
int main(void)
{
int i;
char *test[] = {"", "-123", "-", "a", "100", "12312312382131232"};
char *test2[] = {"blah 123 bleh", "blah - bleh", "abc -200 aaa"};
char buf[50];
for(i=0; i- luulin aiheen olevan C:tä
kylläpäs nyt sattuikin... en jaksa samaa javana. Vinkki - Exception.
- keksa
käytä Integer-luokan metodeja
muistaakseni
try
{
int luku = Integer.valueOf( syöte ).intValue()
}
catch (exception e)
{
//eipä ollu perkema!
} - tietoa
Jos katsotaan apia: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#nextInt()
niin nähdään nopeasti, että minkälaisen poikkeuksen scanner heittää, jos syöte ei ole sopiva. Tuosta sit vaan try-catchillä homma haltuun - Esimerkkejä
--- ESIMERKKI ALKAA ---
import java.util.Scanner;
public class Esimerkki {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
if (scan.hasNextInt())
System.out.println("Syöte on int: " scan.nextInt());
else
System.out.println("Syöte ei ole muotoa int");
}
}
--- ESIMERKKI LOPPUU ---
--- ESIMERKKI ALKAA ---
import java.util.InputMismatchException;
import java.util.Scanner;
public class Esimerkki {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
try {
int numero = scan.nextInt();
System.out.println("Syöte on int: " numero);
} catch(InputMismatchException e) {
System.out.println("Syöte ei ole muotoa int");
}
}
}
--- ESIMERKKI LOPPUU ---
--- ESIMERKKI ALKAA ---
import java.util.Scanner;
public class Esimerkki {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String jono = scan.next();
try {
int numero = Integer.parseInt(jono);
System.out.println("Syöte on int: " numero);
} catch(NumberFormatException e) {
System.out.println("Syöte ei ole muotoa int");
}
}
}
--- ESIMERKKI LOPPUU ---
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 901348
- 46728
- 20659
Sinisilmäiselle tutulle miehelle
Iltaisin ikävä pahenee ja olet usein mielessä. Toivon merkitseväni sinulle paljon. On ihan hirveän vaikeaa miettiä, mit49640- 80626
- 53618
- 47591
- 50573
Nainen ... ala olemaan miehille täysin hyödytön
Otsikossa on paras neuvo jokaiselle naiselle, jonka hän voi koskaan saada. Moni mieshän ajattelee jo nyt, että naiset o132568Ylen typerät rinnastukset.
Näin YLE…..Saksassa ei ole äärioikeisto ollut vallassa sitten Hitlerin . YLEn toimittajille tiedoksi . Hitler oli Saksan192553