2017-02-06 3 views
0

У меня возникли трудности с методом. Мой код работает очень хорошо, пока я не доберусь до формулы для метода. Я сделал что-то подобное, я не вижу, что я делаю неправильно. Это часть, в которой есть годы.Проблема с вычитанием метода C#

int age; 
int yearsToWork; 

Console.Write("Enter your name:"); 
string name = Console.ReadLine(); 

Console.Write("Enter your age:"); 
age = Convert.ToInt32(Console.ReadLine()); 

yearsToWork = 65 - age; 
Console.Write("\nYou will work:", yearsToWork); 
Console.Write("years before you retire."); 
Console.Read(); 

Благодарю вас за помощь.

+5

В чем проблема? – SLaks

+2

См. Документацию для 'Console.Write()'; параметры не означают, что вы думаете о них. – SLaks

ответ

1

Это должно работать:

static void Main(string[] args) 
    { 
     int age; 
     int YearsToWork; 

     Console.Write("Enter your name:"); 
     string name = Console.ReadLine(); 
     Console.Write("Enter your age:"); 
     age = Convert.ToInt32(Console.ReadLine()); 
     YearsToWork = 65 - age; 
     Console.WriteLine("You will work: {0} years before you retire", YearsToWork); 
     Console.Read(); 
    } 

Console.WriteLine(); работа аналогична string.Format(); при вставке строки;
1-й параметр после того, как строка будет {0}, вторая строка {1} и так далее ...

+0

Да, это сработало, большое спасибо! Кроме того, спасибо за объяснение. Я все еще довольно новичок в C#, и теперь я понимаю это немного лучше. – Shade

1

Попробуйте это:

Console.Write("\nYou will work: " + YearsToWork.ToString()); 

Как говорит MSDN, Console.Write:

Записывает текстовое представление указанного объекта в стандартный выходной поток с использованием указанной информации о формате.

https://msdn.microsoft.com/en-us/library/9xdyw6yk(v=vs.110).aspx

И это не может быть значение, которое вы ожидаете.

0

Этот вопрос вы вызываете Console.Write("\nYou will work:", YearsToWork);, которые только запишет string и ничего другого, если вы хотите, чтобы генерировать более сложное сообщение вы должны использовать string.Format или Console.WriteLine. Ваш код должен быть что-то вроде этого:

int maxWorkAge = 65; 
Console.Write("Enter your name:"); 

string name = Console.ReadLine(); 
Console.Write("Enter your age:"); 
int age = Convert.ToInt32(Console.ReadLine()); 

int yearsToWork = maxWorkAge - age; 

Console.WriteLine(); 
Console.Write("You will work: {0} years before you retire.", yearsToWork); 
Console.Read(); 

Обратите внимание, что я установил все имена переменных lowerCamelCase и объявил их по мере необходимости, и я сделал переменную (которая так же может быть константой) для 65 постоянный, который вы использовали. Все это рекомендации наилучшей практики. Надеюсь, это поможет

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