PROBLEMA C# Semplice Programma

Spoderman

Nuovo Utente
98
5
CPU
i5 4690k
Scheda Madre
Z 97K
HDD
Kingston SV300S37A/120g
RAM
(1X8 + 2X4)gb Kingston
GPU
R9 280X Dual X (3gb)
Monitor
60hz, 1600x900
PSU
XfX 650w
Case
Thermaltake Armor
OS
Windows 8.1
Hey ragazzi ho iniziato oggi a studiarmi un po' di c# ed in questo momento stavo cercando di scrivere un programma che teoricamente dovrebbe permettere di inserire dei numeri in un array e, nel caso il valore inserito non fosse un "int", bloccare il ciclo; il problema è che una volta avviato il programma da il seguente errore:

Codice:
using System;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array_1 = new int[10]; int i = 0;
            while (i < array_1.Length)
            {
                Console.WriteLine("Numero da inserire nell'array: ");
                int a = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine(a.GetType());
                if (a.GetType() != typeof(int))
                {
                    Console.WriteLine("Il tipo di variabile inserita non e' corretta.");
                }
                array_1[i] = a;
                i++;
            }
            foreach(int numbers in array_1)
            {
                Console.Write(numbers + ",");
            }
            Console.Read();
        }
    }
}

http://prntscr.com/cobvgy < Questo è l'errore (Quando effettivamente provo ad inserire un altro tipo di variabile)

Qualcuno potrebbe spiegarmi il motivo? Se vedete qualche boiata scritta in questo codice non linciatemi troppo che devo ancora capire bene come funzioni questo linguaggio :p
 
Ultima modifica:

Giacky91

Utente Attivo
793
84
CPU
Intel Core I7 - 2630QM - 2.0 GHZ
Scheda Madre
Proprietaria
HDD
500GB WD 2.5"
RAM
2 x 2GB Corsair
GPU
GeForce GT540M 1GB
Audio
Integrato
OS
Windows 10 Pro, Kali Linux 2.0
è qualche anno che non uso C#, pero mi ricordo che si usava qualcosa del tipo
Codice:
int num = int.Parse(console.ReadLine());

ovviamente, se inserisci una lettera avrai una FormatException che dovrai gestire.
il Parse cerca di convertire il testo inserito in un int.
Puoi eventualmente usare int.TryParse
 

Zofen

Utente Attivo
608
33
Ciao, è un semplice errore di formato. Ti indica che l'input fornito non è quello che ci si aspetta, in questo caso un int. Puoi risolvere con il metodo TryParse che ritorna rispettivamente un bool. Tramite una condizione ternaria puoi buttare fuori il valore con out se il risultato è true, quindi corrispondente ad int, altrimenti essendo false generi un errore, dicendo all'utente che il numero non è corretto.
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili