Avatar billede maxmuldjord Nybegynder
08. oktober 2004 - 21:20 Der er 25 kommentarer og
1 løsning

nu gik der selvfølgelig kage i det

Jeg får følgende fejlmeddelse:

Linje 52:            
Linje 53:             {
Linje 54:                 int score =+ Convert.ToInt32(txtAces.Text)+
Linje 55:                     Convert.ToInt32(txtTwos.Text)+
Linje 56:                     Convert.ToInt32(txtThrees.Text)+


Kildefil: c:\inetpub\wwwroot\dices\dices.aspx.cs    Linje: 54

Staksporing:


[FormatException: Inputstrengen var ikke i et korrekt format.]
  System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
  System.Convert.ToInt32(String value) +47
  EXP2.Dices.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\dices\dices.aspx.cs:54
  System.Web.UI.Control.OnLoad(EventArgs e)
  System.Web.UI.Control.LoadRecursive()
  System.Web.UI.Page.ProcessRequestMain()



fatter det ikke!
Avatar billede erikjacobsen Ekspert
08. oktober 2004 - 21:22 #1
Hvad indeholder xtAces.Text, Twos.Text, Threes.Text ?
Avatar billede arne_v Ekspert
08. oktober 2004 - 21:23 #2
Et af de 3 text felter må indeholde noget som ikke er et validt heltal.

Tom streng er formentlig også invalidt.
Avatar billede maxmuldjord Nybegynder
08. oktober 2004 - 21:28 #3
jamen de er tomme indtil videre, det skal de være indtil det blover nødvendigt at putte noget i dem
Avatar billede erikjacobsen Ekspert
08. oktober 2004 - 21:29 #4
;) Så er det jo nok derfor
Avatar billede arne_v Ekspert
08. oktober 2004 - 21:29 #5
Hvad forventer du at Convert.ToInt32 returnerer for blank streng ?
Avatar billede maxmuldjord Nybegynder
08. oktober 2004 - 21:49 #6
Jeg kunne tænke mig at textboxen var tom indtil jeg skulle bruge den men der er måske en anden og bedre måde at gøre det på ? Jeg skulle måske lige poste koden:

if (Page.IsPostBack)
           
            {
                int score =+ Convert.ToInt32(txtAces.Text)+
                    Convert.ToInt32(txtTwos.Text)+
                    Convert.ToInt32(txtThrees.Text)+
                    Convert.ToInt32(txtFours.Text)+
                    Convert.ToInt32(txtFives.Text)+
                    Convert.ToInt32(txtSixes.Text);
                lblScore.Text = score.ToString();
                lblScore.Visible=true;

Skal i bruge mere?
Avatar billede maxmuldjord Nybegynder
08. oktober 2004 - 21:49 #7
og kunne jeg ikke tillade en nulværdi?
Avatar billede arne_v Ekspert
08. oktober 2004 - 21:51 #8
+ (txtXxx.Text != "" ? Convert.ToInt32(txtXxx.Text) : 0)

måske
Avatar billede maxmuldjord Nybegynder
08. oktober 2004 - 21:55 #9
prøver Arne
Avatar billede erikjacobsen Ekspert
08. oktober 2004 - 22:14 #10
Eller du kunne lave en metode der - måske - gør det lidt nemmere:

  public static int MyConvertInt32(string s,int def) {
    try {
      return Convert.ToInt32(s);
    } catch (FormatException) {
      return def;
    }
  }

  public static void Main(string[] args) {
    Console.WriteLine(MyConvertInt32("7913",0));
    Console.WriteLine(MyConvertInt32("-7913",0));
    Console.WriteLine(MyConvertInt32("",0));
    Console.WriteLine(MyConvertInt32("hundeflyving for begyndere",0));
  }
Avatar billede maxmuldjord Nybegynder
09. oktober 2004 - 06:44 #11
hvordan laver jeg en if (! = "") på hele blokken på en gang?
Avatar billede arne_v Ekspert
09. oktober 2004 - 09:34 #12
Spørgsmål ikke forstået.

Du kan sætte flere linier i { }.

Men umiddelbart synes jeg at ?: konstruktionen var anvendelig er.
Avatar billede maxmuldjord Nybegynder
09. oktober 2004 - 10:20 #13
Jeg har prøvet på din måde Arne og så kommer der flere fejlmeddelser, den vil så ike have ; men : efter

Convert.ToInt32(txtSixes.Text);
                lblScore.Text = score.ToString();
                lblScore.Visible=true;

disse, når jeg så prøver det kommer der andre fejlmeddelser.
Avatar billede erikjacobsen Ekspert
09. oktober 2004 - 10:37 #14
Skal vi så lige se om min måde virker ,)

            int score =+ MyConvertInt32(txtAces.Text,0)+
                    MyConvertInt32(txtTwos.Text,0)+
                    MyConvertInt32(txtThrees.Text,0)+
                    MyConvertInt32(txtFours.Text,0)+
                    MyConvertInt32(txtFives.Text,0)+
                    MyConvertInt32(txtSixes.Text,0);
                lblScore.Text = score.ToString();
                lblScore.Visible=true;

og snup metoden MyConvertInt32 fra tidligere indlæg
Avatar billede maxmuldjord Nybegynder
09. oktober 2004 - 10:52 #15
Selvfølgelig skal vi prøve om din måde virker Erik, jeg er bare ikke helt med på hvordan? hvordan kombinere jeg disse 2 metoder?
Avatar billede erikjacobsen Ekspert
09. oktober 2004 - 11:01 #16
Glem, for en kort stund, hvad Arne skriver. Dette skal bestemt ikke tages som en generel anbefaling. ;)

Definer metoden som jeg skrev.
Og skriv udregningen som jeg skrev.
Avatar billede arne_v Ekspert
09. oktober 2004 - 11:10 #17
Var det:

      int score =  (txtAces.Text != "" ? Convert.ToInt32(txtAces.Text) : 0) +
                    (txtTwos.Text != "" ? Convert.ToInt32(txtTwos.Text) : 0) +
                    (txtThrees.Text != "" ? Convert.ToInt32(txtThrees.Text) : 0) +
                    (txtFours.Text != "" ? Convert.ToInt32(txtFours.Text) : 0) +
                    (txtFives.Text != "" ? Convert.ToInt32(txtFives.Text) : 0) +
                    (txtSizes.Text != "" ? Convert.ToInt32(txtSixes.Text) : 0);

du prøvede med ?

(men Eriks løsning er skam også udmærket)
Avatar billede maxmuldjord Nybegynder
09. oktober 2004 - 12:21 #18
hmmmmmmm.. nu er jeg endnu mere forvirret - - Jeg har prøvet Arnes metode og den virker men jeg vil lige prøve om jeg kan finde ud af din også Erik i mellemtiden tænkte jeg påom jeg kunne få en af jer til at forklare denne så en bondekarl som mig kan forstå det?

min klasse hedder Dices og her er et bud på en løsning jeg har ledt efter til at lave et scoreboard

private void Button2_Click(object sender, System.EventArgs e)
        {
            int ValidateAces(int[] Dices)
            {
                if(Dices.Length != 5)
                    throw new Exception();
                int score = 0;
                foreach(int i in Dices)
                {
                    if(Dices[i]==1)
                        score += Dices[i];
                }
                return score;
            }


                txtAces.Text= // hvad skal jeg have her?

Jeg kan byde ind med 5 point mere, det er alt hvad der er på kontoen!
Avatar billede arne_v Ekspert
09. oktober 2004 - 12:23 #19
Eriks metode er såmænd ikke så indviklet.

Han konverterer tekst feltet til et helt tal. Hvis det giver en fejl så fanger
han den og returnerer nul.
Avatar billede arne_v Ekspert
09. oktober 2004 - 12:27 #20
Og point er ikke så kritisk.

Erik samler slet ikke på dem.

Jeg samler på dem. Men jeg går ikke så meget op i om det er få eller mange point.
Jeg besvarer også spørgsmål med få point. Til gengæld har jeg heller ikke
dårlig samvittighed over somme tider at modtage mange point for nemme
spørgsmål.
Avatar billede maxmuldjord Nybegynder
09. oktober 2004 - 12:28 #21
ok, men et eller andet skal i da have for ulejligheden
Avatar billede arne_v Ekspert
09. oktober 2004 - 12:30 #22
Jeg vil gerne ligge et svar
Avatar billede erikjacobsen Ekspert
09. oktober 2004 - 12:46 #23
txtAces.Text= ""+ValidateAces(....);

jeg ved ikke hvad der skal stå på prikkernes plads.
Avatar billede erikjacobsen Ekspert
09. oktober 2004 - 12:48 #24
Måske skal du

  if(i==1)
    score += i;

Men jeg ved jo ikke hvad der står i dit array.
Avatar billede arne_v Ekspert
09. oktober 2004 - 12:56 #25
Hvis man skal tælle antal enere så er det vel:

if(Dices[i]==1) score++;

(men jeg er også i tvivl om logikken)
Avatar billede erikjacobsen Ekspert
09. oktober 2004 - 12:59 #26
foreach(int i in Dices)
giver nu værdierne og ikke indexerne.

Så hvis man skal tælle hvor mange esser (ettere) der er, skal
det jo nok være

  if(i==1)

og hvis man skal tælle hvor mange der er, så er det
nok
  count++;
men skal man lægge værdierne sammen vil jeg foretrække
  score=+i;
da det vil ligne hvad man skal gøre for 2-, 3- ...osv-ere.
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