2013-04-08 3 views
-4

Мне нужно сделать небольшую программу, которая запрашивает тестовую метку пользователя и определяет, прошел ли пользователь или не прошел. Тестовая метка менее 50 является ошибкой.Помогите мне в этой ошибке здесь

Вот код, который у меня есть. Это дает мне 2 ошибки (у которых есть звезды в них.)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Prac6Question2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      double testMark; 
      string result; 

      testMark = GetTestMark(*testMark*); 
      result = DetermineResult(testMark, *result*); 
      Display(testMark, result); 

     } 

     static double GetTestMark(double testMark) 
     { 
      Console.WriteLine("Your test result: "); 
      testMark = double.Parse(Console.ReadLine()); 
      return testMark; 

     } 

     static string DetermineResult(double testMark, string result) 
     { 
      if (testMark < 50) 
       result = "Fail"; 
      else 
       result = "Pass"; 

      return result; 

     } 

     static void Display(double testMark, string result) 
     { 
      Console.WriteLine("Your test result: {0}", result); 
      Console.ReadLine(); 
     } 

    } 

} 

Помогите. Благодарю.

+1

У вас есть ошибки, а? Кто они такие? Первая проблема, которую я вижу, заключается в том, что вы передаете неизведанные переменные. – tnw

+0

У вас есть два неинициализированных местных жителей в 'main'. Быстрое исправление - инициализировать их, прежде чем передавать их другим методам. Лучшее решение - рефакторинг и не передавать переменную * output * в качестве * input * к вспомогательному методу, который предназначен для возврата его значения. –

ответ

1

Вам не нужно передавать эти значения в соответствующие функции. Удалите параметры и внесите новые переменные в функции.

testMark = GetTestMark(); 
result = DetermineResult(testMark); 
1
  • testMark & результат не еще назначаются при их использовании
0

Довольно просто, что вы снимались должны быть удалены. Вы передаете в переменной, что вы не используете, а компилятор, скорее всего, жалуясь неинициализированными переменных

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Prac6Question2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      double testMark; 
      string result; 

      testMark = GetTestMark(); 
      result = DetermineResult(testMark); 
      Display(testMark, result); 

     } 

     static double GetTestMark() 
     { 
      double testMark; 
      Console.WriteLine("Your test result: "); 
      testMark = double.Parse(Console.ReadLine()); 
      return testMark; 

     } 

     static string DetermineResult(double testMark) 
     { 
      string result; 
      if (testMark < 50) 
       result = "Fail"; 
      else 
       result = "Pass"; 

      return result; 

     } 

     static void Display(double testMark, string result) 
     { 
      Console.WriteLine("Your test result: {0}", result); 
      Console.ReadLine(); 
     } 

    } 

} 
1

Для того, чтобы иметь GetTestMark изменить значение в области видимости вызывающего абонента, вы должны пройти двойной по ссылке:

static void GetTestMark(out double testMark) 

«out» указывает, что значение будет инициализировано в этом методе.

Затем вызовите его через:

GetTestMark(out testMark); 

Однако, так как вы возвращения значения, вам не нужно, чтобы передать его на все:

static double GetTestMark() 
{ 
    double testMark; // Declare a local 
    Console.WriteLine("Your test result: "); 
    testMark = double.Parse(Console.ReadLine()); 
    return testMark; 
} 

И позвони через:

testMark = GetTestMark(); 

Результат такой же - поскольку вы возвращаете значение, нет никаких оснований передавать его. Тот же тип изменения, что и выше, заставит его работать должным образом.

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