2016-04-07 4 views
1

В настоящее время я изучаю C#, и я хотел сделать простые математические проблемы, используя C#, чтобы улучшить свои навыки. Может кто-нибудь сказать мне, что мне не хватает в этом коде? Я хочу, чтобы пользователь вводил определенную длину, ширину и высоту, а затем код умножал его, а затем делят на 1728, а затем отображает, однако он не работает должным образом. Может кто-то, пожалуйста, помогите мне, спасибоОсновные математические проблемы с использованием C#

 Console.Write("Enter your Length: "); 
     int length = new int(); 
     Console.ReadLine(); 

     Console.Write("Enter your Width: "); 
     int width = new int(); 
     Console.ReadLine(); 

     Console.Write("Enter your Height: "); 
     int height = new int(); 
     Console.ReadLine(); 

     int totalDims = new int(); 
     totalDims = length * width * height; 
     int cubicFeet = new int(); 
     cubicFeet = totalDims/1728; 

     Console.WriteLine("Your total cubic feet is " + cubicFeet); 
     Console.ReadLine(); 

ответ

0

1.) Вы должны установить свои номера. Console.ReadLine() возвращает строковое значение ввода, введенного в консоль, поэтому вам нужно преобразовать его в int.

2.) Операция в конце, скорее всего, вернет десятичный знак, так что totalDims и cubFeet будут десятичными.

 Console.Write("Enter your Length: "); 
     int length = new int(); 
     length = int.Parse(Console.ReadLine()); 

     Console.Write("Enter your Width: "); 
     int width = new int(); 
     width = int.Parse(Console.ReadLine()); 

     Console.Write("Enter your Height: "); 
     int height = new int(); 
     height = int.Parse(Console.ReadLine()); 

     int totalDims = new int(); 
     totalDims = length * width * height; 

     //isnt cubic feet just length * width * height? 
     //decimal cubicFeet = new decimal(); 
     //cubicFeet = totalDims; 

     Console.WriteLine("Your total cubic feet is " + totalDims); 
     Console.ReadLine(); 
+0

Письмо приведет к исключению формата. –

1

Вы должны разобрать, чтобы int строки, которые вы прочитали из консоли:

int length = 0; 
int.TryParse(Console.ReadLine(), out length); 
... 
int width = 0; 
int.TryParse(Console.ReadLine(), out width); 
... 
int height = 0; 
int.TryParse(Console.ReadLine(), out height); 

Кроме того, если вы хотите cubicFeet как плавающий номер:

double cubicFeet = totalDims/1728.0; 
+0

Я просто указываю, что ему недоставало –

1

Вы никогда в настоящее время устанавливая значения, которые вы читаете из командной строки в своих Console.ReadLine() вызовах.

Console.ReadLine() фактически вернет строку, представляющую введенное значение, поэтому вам нужно будет преобразовать ее в правильный числовой тип, чтобы вы могли его использовать.

Поскольку вы имеете дело с целыми числами, вы можете использовать методы Convert.ToInt32() или Int32.Parse(), как показано ниже:

Console.Write("Enter your Length: "); 
// Read and parse your length 
int length = Convert.ToInt32(Console.ReadLine()); 

Console.Write("Enter your Width: "); 
// Read and parse your width 
int width = Convert.ToInt32(Console.ReadLine()); 

Console.Write("Enter your Height: "); 
// Read and parse your height 
int height = Convert.ToInt32(Console.ReadLine()); 

// Now you have all of your dimensions so calculate 
int totalDims = length * width * height; 
// Since you are performing division, you could have a fractional 
// value here, so you might want to use another type like decimal 
decimal cubicFeet = totalDims/1728m; 

// Output your result 
Console.WriteLine("Your total cubic feet is " + cubicFeet); 

Если вы хотите imlpement еще более безопасное решение, следует рассмотреть метод Int32.TryParse() который позволит вам знать, если преобразование хорошо или нет, и позволит вам снова подскажете:

int length, width, height, totalDims; 

Console.Write("Enter your Length: "); 
// Read and parse your length 
while(!Int32.TryParse(Console.ReadLine(), out length)){ 
    Console.Write("Enter your Length again: "); 
} 

Console.Write("Enter your Width: "); 
// Read and parse your width 
while(!Int32.TryParse(Console.ReadLine(), out width)){ 
    Console.Write("Enter your Width again: "); 
} 

Console.Write("Enter your Height: "); 
// Read and parse your height 
while(!Int32.TryParse(Console.ReadLine(), out height)){ 
    Console.Write("Enter your Height again: "); 
} 

// Now you have all of your dimensions so calculate 
totalDims = length * width * height; 
// Since you are performing division, you could have a fractional 
// value here, so you might want to use another type like decimal 
decimal cubicFeet = totalDims/1728m; 
// Output your result 
Console.WriteLine("Your total cubic feet is " + cubicFeet); 

вы можете see a complete working example of this in action here.

+1

Спасибо за напоминание Стив. Я добавил, что надоедливые 'm' там для вас и соответственно обновлены. –

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