좋아요, 나는 isNumber가 마침내 작동하고 있음을 확신합니다. 도움을 주신 모든 분들께 감사드립니다. 나는이 프로젝트에 대한 실제 작업을 시작할 준비가 거의 다되었다고 생각한다. 나는 머리 주위를 감싸는 중이다.목록에는 처음 두 항목 만 포함됩니다.
내가하고있는 일은 숫자 일 경우 많은 수의 입력을 한 번에 확인하고 그 결과를 목록에 저장하는 것입니다. 그런 식으로 그들 중 하나가 숫자인지 알아 내려면 두 번째 목록에서 해당 값을 확인하면됩니다.
내 문제는 명확하게 3 가지를 내 목록에 넣고 있지만 항상 표시되는 항목의 수를 인쇄하면됩니다.이 도대체 무엇이 잘못 되었습니까? 특히, 적어도 numberOfNumbers만큼 오래 걸리면 areNumbers는 항상 길이 2의 목록을 반환합니까?
추신 : 나는 내 코드가 아직 잘 보이지 않는다는 것을 알고있다. 스타일에 대해 배우기 전에 바로 기본을 배우고 싶습니다.
static void Main(string[] args)
{
var maybe = new ArrayList(3);
maybe.Add(100f);
maybe.Add("not a number");
maybe.Add(1000);
Console.WriteLine(areNumbers(maybe).Count);
Console.ReadLine();
}
static ArrayList areNumbers(ArrayList maybeNumbers)
{
var theResults = new ArrayList(0);
var numbersEnumerator = maybeNumbers.GetEnumerator();
var numberOfNumbers = 0;
try
{
for (; ;)
{
numberOfNumbers = numberOfNumbers + 1;
numbersEnumerator.MoveNext();
var myIsNumber = isNumber(numbersEnumerator.Current);
var myAreNumbers = new ArrayList(numberOfNumbers);
myAreNumbers.Add(theResults);
myAreNumbers.Add(myIsNumber);
theResults = myAreNumbers;
}
}
catch (InvalidOperationException)
{
return theResults;
}
}
static bool isNumber(object theObject)
{
var s = theObject.GetType().ToString().ToUpper();
Console.WriteLine(s);
return theObject is int || theObject is Int64 || theObject is float || theObject is double;
}
이 라인의 의도가 무엇입니까? for (;;) { –
무한 루프? – Artur
MoveNext가 실패 할 때 Catch가 잡는 것처럼 보입니다. 이상 하네. – Almo