Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 请更正我的代码,它只是不工作,MPG计算器_C#_Forms_Textbox - Fatal编程技术网

C# 请更正我的代码,它只是不工作,MPG计算器

C# 请更正我的代码,它只是不工作,MPG计算器,c#,forms,textbox,C#,Forms,Textbox,这是代码,请帮忙。它不起作用。有人答应过我会的。 我无法将文本框的字符串转换为int,因此无法进行所需的数学运算 public Form1() { InitializeComponent(); } int userVal = int.Parse(Form1.textBox1.Text); private void button1_Click(object sender, EventArgs

这是代码,请帮忙。它不起作用。有人答应过我会的。 我无法将文本框的字符串转换为int,因此无法进行所需的数学运算

        public Form1()
        {
            InitializeComponent();
        }

        int userVal = int.Parse(Form1.textBox1.Text);
        private void button1_Click(object sender, EventArgs e)
        {
            int answer = (Form1.textBox1 * Form1.textBox2);
            MessageBox.Show("MPG: ", answer);
        }
首先,这一行必须放在button1_Click函数中才能工作。但现在的问题是,您正在使用字符串输入来接受数字,这不是一个好主意,因为如果您键入“abc”,例如,int.Parse将抛出一个异常

现在您只需将textBox1和TextBox2替换为数字输入,然后使用以下代码:

public Form1()
{
    InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
    int answer = (numericalInput1.value * numbericalInput2.value);
    MessageBox.Show("MPG: ", answer);
}

首先。您应该真正从基础开始,因为在您的代码中,您尝试将两个
TextBox
控件相乘,这是不可能的

其次。我更正了你的代码

Int32.TryParse(someString,out anInt)
尝试将第一个参数(someString)转换为
Int32
,并返回一个关于转换是否成功的布尔值。如果转换成功,转换后的值将存储在第二个参数(anInt)中,并且
Int32.TryParse(someString,out anInt)
返回
true

在已更正的代码中,您只需尝试将
字符串
s从两个
文本框
es转换。如果您能够这样做(返回值
Int32.TryParse
),只需将从
Int32.TryParse

public Form1()
{
    InitializeComponent();
}


private void button1_Click(object sender, EventArgs e)
{
    int num1,num2;
    If(Int32.TryParse(textBox1.Text,out num1) && Int32.TryParse(textBox2.Text,out num2))
    {
        int answer = num1 * num2;
        string output = "MPG: "+ answer.ToString();
        MessageBox.Show(output);
    }

}

您没有使用userValTry,而是使用int.TryParse而不是int.Parse。当然,这不是这段代码的唯一问题。1)int userVal=int.Parse(Form1.textBox1.Text)不能在方法或构造函数之外运行此代码。2) 为什么da hack是你的
textBox1
静态的?如果不是,则删除
表格1
!3)
它不工作。
这是您可以给出的最糟糕的问题描述!你有编译错误吗?运行时错误?例外情况?告诉我们更多…无论如何这都会崩溃。什么是表格1?它是类名,在C#中,我们没有自动表单实例。您需要一个Form1的实例。第二,两个文本框的内容是什么。如果内容不能转换为整数,则Int.Parse将失败。例如,空字符串1。他只是没有包括公共部分类Form1:Form。另外,他可能正在使用VisualStudio表单所见即所得编辑器,该编辑器处理表单实例。2.我同意,他应该使用数字输入,因为我忘记了名称、NumericUpDownVal或其他内容。@Laurent如果你想访问类中的元素,请使用
this
关键字,但在大多数情况下,这是不必要的。是的,我没有注意到他这样做了@schgab。顺便说一下,我编辑了我的答案。@MongZhu谢谢你的反馈。再次编辑我的答案,解释代码是如何工作的。
public Form1()
{
    InitializeComponent();
}


private void button1_Click(object sender, EventArgs e)
{
    int num1,num2;
    If(Int32.TryParse(textBox1.Text,out num1) && Int32.TryParse(textBox2.Text,out num2))
    {
        int answer = num1 * num2;
        string output = "MPG: "+ answer.ToString();
        MessageBox.Show(output);
    }

}