Avatar billede musicchart.dk Nybegynder
14. juni 2005 - 00:00 Der er 7 kommentarer og
2 løsninger

Er bruger input en gyldig int-værdi?

Hvordan kan man undersøge, om brugerens input er en gyldig int-værdi?

Fx. ved et consol input:

int radius = Int32.Parse(Console.ReadLine());

... er der en måde man fx kan få en bool'sk værdi ud, der er true hvis Console.ReadLine() er en gyldig int-værdi?

Hilsen,
Bjarke
Avatar billede driis Nybegynder
14. juni 2005 - 00:13 #1
Det er ikke pænt, men dette er en løsning:

string r = Console.ReadLine();                   
            try
            {
                int rv = Convert.ToInt32(r);
                Console.WriteLine("Integer entered");
            }
            catch(FormatException)
            {
                Console.WriteLine("Not an integer");
            }

Jeg ville nok lave en RegularExpression til formålet i stedet.
Avatar billede musicchart.dk Nybegynder
14. juni 2005 - 00:50 #2
Ja, jeg har godt nok også kigget lidt her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemint32classcomparetotopic.asp

... hvor det virker til at jeg skal bruge 'ArgumentException'. Men jeg er nybegynder til C#, og har hørt at det skulle være langhåret. Du har ikke et eksempel hvor man benytter sig af det?
Avatar billede arne_v Ekspert
14. juni 2005 - 01:06 #3
eksempler på lidt af hvert:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static bool IsNumber1(string s)
    {
        try
        {
            int.Parse(s);
            return true;
        }
        catch(FormatException)
        {
            return false;
        }
    }
    public static bool IsNumber2(string s)
    {
        for(int i = 0; i < s.Length; i++)
        {
            if(!Char.IsDigit(s[i]))
            {
                return false;
            }
        }
        return true;
    }
    public static bool IsNumber3(string s)
    {
        return Regex.IsMatch(s, "^[0-9]+$");
    }
    public static void Test(string s)
    {
        Console.WriteLine(s + " " + IsNumber1(s) + " " + IsNumber2(s) + " " + IsNumber3(s));
    }
    public static void Main(string[] args)
    {
        Test("123");
        Test("abc");
        Test("123abc");
    }
}
Avatar billede musicchart.dk Nybegynder
14. juni 2005 - 01:28 #4
ah, tak arne - det var 'Char.IsDigit' jeg ledte efter.
Lægger du et svar?
Avatar billede arne_v Ekspert
14. juni 2005 - 01:35 #5
ok - men driis'es svar var nu ikke forkert
Avatar billede arne_v Ekspert
14. juni 2005 - 01:36 #6
vær iøvrigt opmærksom på at mine IsNumberX ikke er helt ens - 2 og 3 accepterer
ikke negative tal
Avatar billede musicchart.dk Nybegynder
14. juni 2005 - 01:41 #7
nej, rigtigt - jeg venter med at lukke, til driis har smidt et svar.
Avatar billede driis Nybegynder
14. juni 2005 - 11:40 #8
Svar

Jeg synes Arne's løsning med RegEx er bedst, den skal bare udvides så f.eks. minus og plus er tilladt (Med mindre det selvfølgelig specifikt kun er cifre du vil tillade). IsNumber2 fejler hvis bruger indtaster f.eks. "-12" fordi "-" ikke er et tal.
Avatar billede musicchart.dk Nybegynder
14. juni 2005 - 14:41 #9
Rigtigt, men jeg vil lige blive lidt mere tryg ved C#, før jeg begynder at lege med RegularExpressions.

Men tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester