2011-12-30 41 views
9

Tôi là người mới lập trình và quan tâm đến C#. Tôi đang nghiên cứu mảng và phải so sánh biến của tôi (checkNum) với mảng của tôi (myNums [10]). Tôi đọc các bài viết ở đây và một số trang khác và thấy cách so sánh nhưng bị mắc kẹt về cách hiển thị đúng cách so sánh như trong nỗ lực của tôi với câu lệnh if/else bên dưới: (Tôi sẽ tiếp tục nghiên cứu, nhưng sẽ đánh giá cao và thúc đẩy . đúng hướng Không nhất thiết phải là câu trả lời như tôi muốn tìm hiểu) :)So sánh giá trị int với một mảng, sau đó hiển thị nếu giá trị khớp hoặc không khớp với

đây là mã của tôi:

int[] myNums = new int[10]; 
int checkNum; 
Console.WriteLine("Enter 10 numbers:"); 

for (int i = 0; i < 10; i++) 
{ 
    Console.Write("Number {0}: ", i + 1); 
    myNums[i] = int.Parse(Console.ReadLine()); 
} 
Console.WriteLine("You entered:"); 
foreach (int x in myNums) 
{ 
    Console.Write("{0} ", x); 
} 
Console.ReadLine(); 

Console.WriteLine("Enter another number:"); 
checkNum = int.Parse(Console.ReadLine()); 
bool exists = myNums.Contains(checkNum); 

if (checkNum == myNums[10]) 
{ 
    Console.WriteLine("Your number {0} is in the Array.", checkNum); 
} 
else 
{ 
    Console.WriteLine(
     "Your number {0} does not match any number in the Array.", 
     checkNum); 
} 
Console.ReadLine(); 
+1

Ngoài tất cả các câu trả lời liên quan đến ranh giới mảng và không sử dụng var tồn tại tôi sẽ thêm rằng nó thường là một ý tưởng tốt để sử dụng int.TryParse (chuỗi, ra int) để tránh đầu vào xấu. – Nickolodeon

+1

+1 để yêu cầu trợ giúp thay vì yêu cầu câu trả lời –

Trả lời

0

Bạn cần phải lặp qua mảng để xem nếu giá trị trong đó:

bool exists = false; 
for (int i=0; i<myNums.Length; i++) 
{ 
    if (checkNum == myNums[i]) 
    { 
     exists = true; 
     break; 
    } 
} 

if (exists) 
{ 
    Console.WriteLine("Your number {0} is in the Array.", checkNum); 
} 
else 
{ 
    Console.WriteLine(
     "Your number {0} does not match any number in the Array.", 
     checkNum); 
} 
+0

'Chứa()' đơn giản hơn nhiều để sử dụng. –

+0

Chứa đơn giản hơn, nhưng bạn có thể thực hiện một kết quả lặp lại lớn hơn, do đó bạn có thể thấy chỉ mục nào bằng nhau và chỉ số nào không bằng. –

+0

Sau đó, bạn sẽ sử dụng 'IndexOf' và kiểm tra' -1', vẫn không cần một vòng lặp trong mã của bạn. OP cũng không cần biết chỉ mục. –

6
bool exists = myNums.Contains(checkNum); 
if(checkNum == myNums[10]) 
{ 
    Console.WriteLine("Your number {0} is in the Array.", checkNum); 
} 
else 
{ 
    Console.WriteLine("Your number {0} does not match any number in the Array.", checkNum); 
} 

Nên

bool exists = myNums.Contains(checkNum); 
// or simply if(myNums.Contains(checkNum)) as you don't use the variable again 
if(exists) 
{ 
    Console.WriteLine("Your number {0} is in the Array.", checkNum); 
} 
else 
{ 
    Console.WriteLine("Your number {0} does not match any number in the Array.", checkNum); 
} 

Bạn thực hiện việc kiểm tra một cách chính xác, nhưng bạn không sử dụng kết quả (exists) và đơn giản (cố gắng) so sánh số điện thoại mới đến yếu tố cuối cùng trong mảng. Tất nhiên, tại thời điểm này chương trình của bạn chỉ bị treo vì bạn đã vượt quá giới hạn của mảng của bạn.

Mảng được lập chỉ mục 0, tức là, nums[10] chứa chỉ mục 0-9.

+0

'Chứa' sẽ làm cho một bó mã của tôi đơn giản hơn rất nhiều. :) ++ – John

+0

Cảm ơn bạn. Tôi thấy nơi mà tôi đã thực hiện sai lầm đó bằng cách sử dụng các biến khác cho câu lệnh "if" đối với bool "exist" đang thực hiện so sánh. Cảm ơn bạn. – Darwin

0

Tại sao bạn có câu lệnh if cuối cùng để kiểm tra: checkNum == myNums[10]? Nó nên sử dụng biến số exists.

Các vấn đề liên quan