2014-11-28 4 views
0

Это, в основном, тупиковая версия того, что я хочу выполнить. Я пытаюсь сказать программу, чтобы передать два метода из разных функций в конечном, но он говорит, что они не существуют в текущем контексте, хотя я пытался передать их в Num1 и Num2Метод Передача от одного к другому

static void Main(String[] args) 
{ 
    int Option; 
    DisplayMenu(); 
    Option = GetUserOption(); 
    while (Option != 0) 
    { 
     switch (Option) 
     { 
      case 1: 
       Num1(); 
       break; 
      case 2: 
       Num2(); 
       break; 
      case 3: 
       Overall(Num3, Num4); 
       break; 
     } 
    } 
} 

static void DisplayMenu() 
{ 
    Console.WriteLine("1. Num1 2.Num2 3.Overall"); 
} 

static int GetUserOption() 
{ 
    int Option; 
    Console.WriteLine("Pick choice"); 
    Option = Convert.ToInt32(Console.ReadLine()); 
    return Option; 
} 

static int Num1() 
{ 
    int Num3; 
    Console.WriteLine("Enter your first number"); 
    Num3 = Convert.ToInt32(Console.ReadLine()); 
    return Num3; 
} 

static int Num2() 
{ 
    int Num4; 
    Console.WriteLine("Enter your second number"); 
    Num4 = Convert.ToInt32(Console.ReadLine()); 
    return Num4; 
} 

public static int Overall(int Num3, int Num4) 
{ 
    int Overall; 
    Console.WriteLine("This will add the two together"); 
    Overall = Overall + Num3 + Num4; 
    Console.WriteLine(Overall); 
    return Overall; 
} 

Это все еще говорит мне, что параметры не существуют в текущем контексте.

EDIT: Перемещено params в общий корпус, но все же такое же сообщение об ошибке.

+0

Вы должны передать параметры в свой 'Общий();' m еню! – Mivaweb

+9

Добро пожаловать в переполнение стека. Пожалуйста, потратьте немного времени на форматирование кода. На самом деле очень трудно читать из-за отступов на данный момент. Чем яснее вы зададите свой вопрос, тем вероятнее, что вы быстро получите хороший ответ. –

+0

@ Jon Skeet не могли бы вы дать мне пример того, как заставить его выглядеть немного лучше? Спасибо :) – Daniel

ответ

0

Я вижу несколько проблем:

  1. В Main, вы не объявленный переменные Num3 и Num4, поэтому компилятор недоволен тем, что вы пытаетесь передать их методе Overall , Вы должны объявить их перед своим циклом (и инициализировать их до значения по умолчанию).

  2. iNum3 и iNum4 не существует в способе Overall. Вы назвали аргументы как Num3 и Num4.

  3. Вы объявили переменную Overall в методе Overall, но не инициализированы, поэтому, когда вы пытаетесь сделать Overall + iNum3 + iNum4, переменная еще не имеет значения. Проще писать int Overall = Num3 + Num4.

+0

Извините старые привычки умереть с «iNum3» и «iNum4». Я заверяю вас, что они верны, и я сейчас разобрался. Спасибо, что набрали на нем – Daniel

0

Во-первых это еще не как бы сделать такую ​​вещь его очень запутанные и оленья кожа имеет смысл, (мне потребовалось некоторое время, чтобы выяснить, что вы делаете). Я все еще точно не знаю, пытаетесь ли вы делать то, о чем я думаю.

В любом случае, я думаю, вы хотите добавить два числа вместе и дать пользователю возможность на каждом шагу, если он хочет ввести номер 1, номер 2 или показать текущий результат? Вот решение, в котором я старался сохранить ваш стиль (если вы смотрите на переключатель и функцию), сохраняя при этом код. Его по-прежнему путь к «сложным» для Что он делает

static void Main(String[] args) 
    { 
     int option = 1; 
     int num1 = 0; 
     int num2 = 0; 
     int sum = 0; 
     DisplayMenu(); 
     while (option != 0) 
     { 
      option = GetUserOption(); 
      switch (option) 
      { 
       case 1: 
        num1 = getNum(option); 
        break; 
       case 2: 
        num2 = getNum(option); 
        break; 
       case 3: 
        Overall(num1, num2, sum); 
        break; 
      } 
     } 
    } 

    static void DisplayMenu() 
    { 
     Console.WriteLine("1: Num1, 2: Num2, 3: Overall, 0: Exit"); 
    } 

    static int GetUserOption() 
    { 
     Console.WriteLine("Pick choice"); 
     return Convert.ToInt32(Console.ReadLine()); 
    } 

    static int getNum(int option) 
    { 
     if (option == 1) 
      Console.WriteLine("Enter your first number"); 
     else 
      Console.WriteLine("Enter your second number"); 
     return Convert.ToInt32(Console.ReadLine()); 
    } 

    static int Overall(int num1, int num2, int sum) 
    { 
     Console.WriteLine("This will add the two together"); 
     sum = num1 + num2; 
     Console.WriteLine(sum); 
     return sum; 
    } 
0
using System; 
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; 
namespace ConsoleApplication1 
{ 
class Program 
    { 
    static void Main(String[] args) 
     { 
     int Option; 
     int Num3, Num4; 
     Num3=1; 
     Num4 = 3; 
     DisplayMenu(); 
     Option = GetUserOption(); 
     while (Option != 0) 
      { 
      switch (Option) 
       { 
       case 1: 
        Num1(); 
        break; 
       case 2: 
        Num2(); 
        break; 
       case 3: 
        Overall(Num3, Num4); 
        break; 
       } 
      } 
     } 

    static void DisplayMenu() 
     { 
     Console.WriteLine("1. Num1 2.Num2 3.Overall"); 
     } 

    static int GetUserOption() 
     { 
     int Option; 
     Console.WriteLine("Pick choice"); 
     Option = Convert.ToInt32(Console.ReadLine()); 
     return Option; 
     } 

    static int Num1() 
     { 
     int Num3; 
     Console.WriteLine("Enter your first number"); 
     Num3 = Convert.ToInt32(Console.ReadLine()); 
     return Num3; 
     } 

    static int Num2() 
     { 
     int Num4; 
     Console.WriteLine("Enter your second number"); 
     Num4 = Convert.ToInt32(Console.ReadLine()); 
     return Num4; 
     } 

    public static int Overall(int Num3, int Num4) 
     { 
     int Overall=0; 
     Console.WriteLine("This will add the two together"); 
     Overall = Overall + Num3 + Num4; 
     Console.WriteLine(Overall); 
     return Overall; 
     } 
    } 
} 
+0

Мы ответили в одно и то же время :) – t3chb0t

0

Проблема заключается здесь, где компилятор не знает, какой Overall вы имеете в виду:

static int Overall(int Num3, int Num4) 
{ 
    int Overall; 
    Console.WriteLine("This will add the two together"); 
    Overall = Overall + iNum3 + iNum4; 
    Console.WriteLine(Overall); 
    return overall; 
} 

сделать внутриполитическую контекстными Overall в малом случае overall

static int Overall(int Num3, int Num4) 
{ 
    int overall; 
    Console.WriteLine("This will add the two together"); 
    overall= overall + iNum3 + iNum4; 
    Console.WriteLine(overall); 
    return Overall; 
} 
+1

Я не уверен, что это правда - я думаю, что настоящая проблема заключается в том, что Num3 не был создан в Main –

+0

t3ch0t, @Greg прав, это не проблема. Проблема вызвана, а не замедлением Num3 и Num4. Вы можете отсылать мой отредактированный код, его работу. – Anil

+0

@akfkmupiwu конечно, я не говорю, что это не так ... мое предположение состояло в том, что мы, возможно, не видим весь код, и я просто подумал, что обе переменные могут быть объявлены выше 'Main', потому что @ Daniel присваивает значения так что иначе он должен увидеть и другие ошибки. – t3chb0t

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