#c#
#c#
Вопрос:
Итак, ниже все, что я получил. Он продолжает говорить мне, что я не могу использовать математический оператор для десятичной дроби или double. К сожалению, это то, что мне приходится использовать. Что я пытаюсь сделать, так это преобразовать измерения длин из имперского в метрический. Я просмотрел множество других вопросов, относящихся к этому, и смог выяснить части кода и как заставить его выполнять оператор «if». Но я просто не могу разобраться в математической части этого. Кто-нибудь может указать мне правильное направление?
public partial class Form1 : Form
{
string conversions;
decimal meter, feet, centimeter, inches, miles, kilometers;
public Form1()
{
InitializeComponent();
}
private void btnCalculate_Click(object sender, EventArgs e)
{
calculateConversions();
}
private void Form1_Load(object sender, EventArgs e)
{
cbConversion.SelectedText = "Miles to Kilometers";
string[] Conversion = new string[] { "Miles to Kilometers",
"Kilometers to Miles",
"Feet to Meters",
"Meters to Feet",
"Inches to Centimeters",
"Centermeters to Inches" };
{ }
for (int i = 0; i < Conversion.Length; i )
{
cbConversion.Items.Add(Convert.ToString(Conversion[i]));
}
miles = 0m;
kilometers = 0m;
feet = 0m;
meter = 0m;
inches = 0m;
centimeter = 0m;
}
private void cbConversion_SelectedIndexChanged(object sender, EventArgs e)
{
conversions = Convert.ToString(cbConversion.SelectedItem);
IList<string> lstString = new List<string>();
lstString.Add("Miles:");
lstString.Add("Kilometers:");
lstString.Add("Feet:");
lstString.Add("Meters:");
lstString.Add("Inches:");
lstString.Add("Centimeters:");
label2.Text = lstString[cbConversion.SelectedIndex];
IList<string> lstStringTwo = new List<string>();
lstStringTwo.Add("Kilometers:");
lstStringTwo.Add("Miles:");
lstStringTwo.Add("Meters:");
lstStringTwo.Add("Feet:");
lstStringTwo.Add("Centimeters:");
lstStringTwo.Add("Inches:");
label3.Text = lstStringTwo[cbConversion.SelectedIndex];
}
private void calculateConversions()
{
decimal input = Convert.ToDecimal(txtInput.Text);
decimal output = Convert.ToDecimal(txtOutput.Text);
if (cbConversion.SelectedText == "Miles to Kilometers")
{
decimal miles = Convert.ToDecimal("");
}
Я даже просмотрел свою книгу и не могу разобраться (это домашнее задание)
Графический интерфейс, который у меня есть. Он выбирается через поле со списком, и введенный текст вычисляется при преобразовании. Все работает, но математика
Комментарии:
1. В чем ошибка и в какой строке?
2. Возможно, вам захочется выполнить резервную копию шага: «SelectedText», скорее всего, не то, что вы думаете, и
""
никогда не преобразуется в десятичное число. Вы также должны использоватьDecimal.TryParse
пользовательский ввод для отслеживания случаев, когда они вводятI Like Pie
вместо цифры3. Хорошо, я получил это, чтобы позволить мне выполнить математическую часть этого. Я не могу понять, как отобразить это в txtOutput.Text
4. Чтобы взять (почти) что угодно (скажем, что-нибудь с именем
theThing
) и преобразовать это в строку, вызовитеtheThing.ToString()
5. Я пробовал это. как мне отобразить текстовое поле вывода (километры)? проблема в том, что метки меняются в зависимости от выбора в выбранном поле со списком. Я получаю сообщение о том, что формат был необработанным ошибка десятичного ввода = преобразования. Десятичный (txtInput.Text); десятичный вывод = Преобразовать. Десятичный (txtOutput.Text); если (cbConversion. Выбранный текст == «Мили в километры») { miles = Преобразовать. Десятичное число(«»); километры = Преобразовать. Десятичное число (мили * 1.6093м); километры = результат;
Ответ №1:
Я добавил cbConversion.SelectedIndex = 0;
в form1_load для выбора первого индекса поля со списком, затем включил calculateConversions()
функцию в каждом условии, которое я вывожу в textoutput.text.
Затем остальное вы можете сделать else if и поискать другую формулу для преобразования.
И я использовал cbConversion.SelectedItem.ToString()
, чтобы вы могли получить текст элемента из списка со списком для сравнения.
Вы можете попробовать это
string conversions;
decimal meter, feet, centimeter, inches, miles, kilometers;
private void btnCalculate_Click(object sender, EventArgs e)
{
calculateConversions();
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
cbConversion.SelectedText = "Miles to Kilometers";
string[] Conversion = new string[] { "Miles to Kilometers",
"Kilometers to Miles",
"Feet to Meters",
"Meters to Feet",
"Inches to Centimeters",
"Centermeters to Inches" };
{ }
for (int i = 0; i < Conversion.Length; i )
{
cbConversion.Items.Add(Convert.ToString(Conversion[i]));
}
miles = 0m;
kilometers = 0m;
feet = 0m;
meter = 0m;
inches = 0m;
centimeter = 0m;
cbConversion.SelectedIndex = 0;
}
private void cbConversion_SelectedIndexChanged(object sender, EventArgs e)
{
conversions = Convert.ToString(cbConversion.SelectedItem);
IList<string> lstString = new List<string>();
lstString.Add("Miles:");
lstString.Add("Kilometers:");
lstString.Add("Feet:");
lstString.Add("Meters:");
lstString.Add("Inches:");
lstString.Add("Centimeters:");
label2.Text = lstString[cbConversion.SelectedIndex];
IList<string> lstStringTwo = new List<string>();
lstStringTwo.Add("Kilometers:");
lstStringTwo.Add("Miles:");
lstStringTwo.Add("Meters:");
lstStringTwo.Add("Feet:");
lstStringTwo.Add("Centimeters:");
lstStringTwo.Add("Inches:");
label3.Text = lstStringTwo[cbConversion.SelectedIndex];
}
private void calculateConversions()
{
decimal input = Convert.ToDecimal(txtInput.Text);
decimal mileToKM = Convert.ToDecimal(1.609344);
if (cbConversion.SelectedItem.ToString() == "Miles to Kilometers")
{
decimal miles = (input * mileToKM);
txtOutput.Text = miles.ToString();
}
}
Комментарии:
1. Это действительно немного помогает. Это просто не отображает текст в поле вывода. Хотя это немного помогло. Немного сократил мое кодирование.
2. @Amanda в чем еще твоя проблема? итак, я могу разобраться в этом и помочь вам.
3. Текст не отображается в текстовом поле. Когда я нажимаю «рассчитать», ничего не отображается.
4. Неважно, то, что я пробовал, не сработало. Если вы вводите что-либо во входной текст (мили в графическом интерфейсе), предполагается, что преобразование отображается в текстовом поле вывода (километры), но оно не отображает преобразование
5. @Amanda Я получаю вашу ошибку, потому что объявленная вами переменная не использовалась. Эти переменные не используются: десятичный метр, футы, сантиметр, дюймы, мили, километры;
Ответ №2:
@justinmontalban это код, который я использую сейчас
private void Form1_Load(object sender, EventArgs e)
{
cbConversion.SelectedText = "Miles to Kilometers";
string[] Conversion = new string[] { "Miles to Kilometers",
"Kilometers to Miles",
"Feet to Meters",
"Meters to Feet",
"Inches to Centimeters",
"Centermeters to Inches" };
{ }
for (int i = 0; i < Conversion.Length; i )
{
cbConversion.Items.Add(Convert.ToString(Conversion[i]));
}
miles = 0m;
kilometers = 0m;
feet = 0m;
meter = 0m;
inches = 0m;
centimeter = 0m;
cbConversion.SelectedIndex = 0;
}
private void cbConversion_SelectedIndexChanged(object sender, EventArgs e)
{
conversions = Convert.ToString(cbConversion.SelectedItem);
IList<string> lstString = new List<string>();
lstString.Add("Miles:");
lstString.Add("Kilometers:");
lstString.Add("Feet:");
lstString.Add("Meters:");
lstString.Add("Inches:");
lstString.Add("Centimeters:");
label2.Text = lstString[cbConversion.SelectedIndex];
IList<string> lstStringTwo = new List<string>();
lstStringTwo.Add("Kilometers:");
lstStringTwo.Add("Miles:");
lstStringTwo.Add("Meters:");
lstStringTwo.Add("Feet:");
lstStringTwo.Add("Centimeters:");
lstStringTwo.Add("Inches:");
label3.Text = lstStringTwo[cbConversion.SelectedIndex];
}
private void calculateConversions()
{
decimal input = Convert.ToDecimal(txtInput.Text);
decimal mileToKM = Convert.ToDecimal(1.6093);
decimal kMToMile = Convert.ToDecimal(0.6214);
decimal ftToM = Convert.ToDecimal(0.3048);
decimal mToFt = Convert.ToDecimal(3.2808);
decimal inToCm = Convert.ToDecimal(2.54);
decimal cmToIn = Convert.ToDecimal(0.3937);
if (cbConversion.SelectedText.ToString() == "Miles to Kilometers")
{
decimal miles = (input * mileToKM);
txtOutput.Text = miles.ToString();
}
Комментарии:
1. Проблема в том, что каждый раз, когда вы нажимаете кнопку рассчитать, ничего не происходит? Вызываете ли вы функцию calculateConversions() каждый раз, когда нажимаете кнопку?
2. да, я даже перенес это в событие click, и ничего не происходит.
3. Попробуйте отладить его, убедитесь, что вы нажали на функцию calculateConversions(). Я обновил свой ответ, я публикую весь свой код, чтобы вы могли проверить.