2015-11-04 1 views
2

Итак, у меня настроены массивы, и они назначены значению в представлении «Главное окно». Он настроен как викторина, и каждый вопрос (если утверждение) является вопросом с разными значениями точки. Я просто не могу понять, как добавить все точки для каждого вопроса в конце.C# в Visual Basic - Как вы добавляете целые числа из параллельных массивов?

namespace ParallelArrRbnQuiz 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     string[] arrUserAnswer = new string[10]; 
     int[] arrPoints = new int[10]; 
     string[] arrCorrectAnswer = new string[10]; 
     int intScore = 0; 


     public MainWindow() 
     { 
      InitializeComponent(); 
      arrCorrectAnswer[0] = "Loop"; 
      arrCorrectAnswer[1] = "Conditional"; 
      arrCorrectAnswer[2] = "Variable"; 
      arrCorrectAnswer[3] = "Java"; 
      arrCorrectAnswer[4] = "Decision"; 
      arrCorrectAnswer[5] = "XAML"; 
      arrCorrectAnswer[6] = "Compiler"; 
      arrCorrectAnswer[7] = "Array"; 
      arrCorrectAnswer[8] = "Syntax Error"; 
      arrCorrectAnswer[9] = "Camel Casing"; 

      arrPoints[0] = 5; 
      arrPoints[1] = 10; 
      arrPoints[2] = 15; 
      arrPoints[3] = 5; 
      arrPoints[4] = 10; 
      arrPoints[5] = 20; 
      arrPoints[6] = 5; 
      arrPoints[7] = 5; 
      arrPoints[8] = 5; 
      arrPoints[9] = 20; 

      arrUserAnswer[0] = "Loop"; 
      arrUserAnswer[1] = "Conditional"; 
      arrUserAnswer[2] = "Variable"; 
      arrUserAnswer[3] = "Java"; 
      arrUserAnswer[4] = "Decision"; 
      arrUserAnswer[5] = "XAML"; 
      arrUserAnswer[6] = "Compiler"; 
      arrUserAnswer[7] = "Array"; 
      arrUserAnswer[8] = "Syntax Error"; 
      arrUserAnswer[9] = "Camel Casing"; 
     } 
     private void Submit_Answers(object sender, RoutedEventArgs e) 
     { 
      if(arrCorrectAnswer[0] == arrUserAnswer[0]) 
      { 
       intScore += arrPoints[0]; 
      } 
      if(arrCorrectAnswer[1] == arrUserAnswer[1]) 
      { 
       intScore += arrPoints[1]; 
      } 
      if(arrCorrectAnswer[2] == arrUserAnswer[2]) 
      { 
       intScore += arrPoints[2]; 
      } 
      if(arrCorrectAnswer[3] == arrUserAnswer[3]) 
      { 
       intScore += arrPoints[3]; 
      } 
      if(arrCorrectAnswer[4] == arrUserAnswer[4]) 
      { 
       intScore += arrPoints[4]; 
      } 
      if(arrCorrectAnswer[5] == arrUserAnswer[5]) 
      { 
       intScore += arrPoints[5]; 
      } 
      if(arrCorrectAnswer[6] == arrUserAnswer[6]) 
      { 
       intScore += arrPoints[6]; 
      } 
      if(arrCorrectAnswer[7] == arrUserAnswer[7]) 
      { 
       intScore += arrPoints[7]; 
      } 
      if(arrCorrectAnswer[8] == arrUserAnswer[8]) 
      { 
       intScore += arrPoints[8]; 

      if(arrCorrectAnswer[9] == arrUserAnswer[9]) 
      { 
       intScore += arrPoints[9]; 
      } 
       txtScore.Text = intScore.ToString(); 
      } 
     } 
    } 
} 
+0

Этот код немного сбивает с толку. Вы можете уточнить? Если вы проверяете ответы пользователей на правильные ответы, это хорошо, но тогда почему вы меняете значения точек в массиве точек? Это не имеет смысла; Я вычислил цикл youd, проверил равенство и добавил точки, если они равны. –

+0

Привет! Извините за путаницу, я новичок в программировании, и у меня возникли проблемы с привычкой к C#. Но я обновил свой код, и теперь он должен сделать немного больше. Надеюсь, это поможет прояснить! – Angel

+1

Это имеет больше смысла, спасибо. См. Ответ Shweta за то, что я сделал бы –

ответ

1

Это то, что я понял из вашего кода

for(int i=0;i<10;i++) 
{ 
    if(arrCorrectAnswer[i] == arrUserAnswer[i]) 
    { 
     arrPoints[i] += arrPoints[i]; 
    } 
} 

, а затем

int TotalPoints = 0; 
for(int i=0;i<10;i++) 
{ 
    TotalPoints += arrPoints[i]; 
} 

Но я считаю, что это должно быть

int TotalPoints = 0; 
for(int i=0;i<10;i++) 
{ 
    if(arrCorrectAnswer[i] == arrUserAnswer[i]) 
    { 
     TotalPoints += arrPoints[i]; 
    } 
} 

После того, что вы можете показать TotalPoints

+0

Хорошо, спасибо! Поэтому я получил код для добавления и отображения в текстовом поле в представлении дизайна, но когда я делаю счет (totalpoints), он всегда добавляет до 25 вместо 100. Вы также знаете, как это исправить? Спасибо вам! – Angel

0

Используйте счетчик, чтобы пройти через каждый элемент массива. Вы можете создать метод, который делает что-то вроде этого:

var counter = 0; 
while (counter <= arrPoints.Length(){ 
    counter += arrPoints[counter] 
} 
return counter; 
0

Вы можете использовать Sum метод Linq расширения, чтобы получить в общей сложности вашего массива.
(примечание: FrameWork 3.5 и выше)

static void Main(string[] args) 
{ 
    int[] arrPoints = new int[] { 5, 10, 15, 5, 10, 20, 5, 5, 5, 20 } ; 
    int value = arrPoints.Sum(); 
    Console.WriteLine(value); 
    Console.ReadLine(); 

} 
Смежные вопросы