Terve!
Millähän keinolla saisi tietää onko käyttäjän antama syöte (scanner) muotoa int?
Kiitos.
Millähän keinolla saisi tietää onko käyttäjän antama syöte (scanner) muotoa int?
Kiitos.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 5
Vanhimmat
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
kylläpäs nyt sattuikin... en jaksa samaa javana. Vinkki - Exception.
käytä Integer-luokan metodeja
muistaakseni
try
{
int luku = Integer.valueOf( syöte ).intValue()
}
catch (exception e)
{
//eipä ollu perkema!
}
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
--- 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 ---