在VS中運行,我想要的結果是,輸入字符,如果是數字,加入陣列,如果是直接回車,輸出“輸入為空”,如果是其他字符,輸出“非法字符重新輸入”。但是現在的結果是,輸入字符,回車,在輸入字符才能正常判斷回圈。剛學C#也看不出來有啥問題。請大家幫忙
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace firstSubject
{
class Program
{
static public bool myType(string num)
{
try
{
Convert.ToInt32(num);
return true;
}
catch
{
return false;
};
}
static void Main(string[] args)
{
int[] ArrayList = new int[10];
int i, j;
int sum = 0;
for (i = 0; i < 10; i++)
{
Console.WriteLine("請輸入陣列ArrayList的第{0}個元素的值:", i);
string myString = Console.ReadLine();
if (myType(Console.ReadLine()))
{
ArrayList[i] = Convert.ToInt32(myString);
}
else if(myString.Length == 0)
{
Console.WriteLine("不可輸入空串,請重新輸入. ");
i--;
}
else
{
Console.WriteLine("非法輸入,請重新輸入.");
i--;
};
}
for (j = 0; j < 10; j++)
{
sum = sum + ArrayList[j];
}
double average = sum / 10;
Console.WriteLine("陣列ArrayList的平均值為:{0:F4}:", average);
Console.ReadKey();
}
}
}
請大家幫忙運行,解答一下,謝謝
uj5u.com熱心網友回復:
去掉其中一個就可以了。string myString = Console.ReadLine();
if (myType(Console.ReadLine()))
{
ArrayList[i] = Convert.ToInt32(myString);
}
比如改成:
string myString = Console.ReadLine();
if (myType(myString))
{
ArrayList[i] = Convert.ToInt32(myString);
}
uj5u.com熱心網友回復:
兄弟,你真是太神奇了。這是什么原理,之前為什么要輸入兩次才能繼續判斷回圈呢
uj5u.com熱心網友回復:
咳咳,因為你用了兩個readline,照你原先的寫法,你輸入第一行通過readline賦給了一個值,然后你輸入第二行才進入選擇陳述句。懂得利用除錯看出問題。
uj5u.com熱心網友回復:
因為你的代碼就是輸入兩次才進回圈撒
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/83772.html
標籤:C#
上一篇:C#進行儀器程控
