我对编码很陌生 - C#是我尝试学习的第一种语言 - 而且我的一个代码遇到了问题。我使用Visual Studio,这个代码的要点是我试图从三个文本框中提取数字,将它们传递给返回最大数字的方法,然后在另一个文本中显示结果框。我已经浏览了这个网站上的其他线程寻找解决方案,但没有运气。
Visual Studio没有向我显示代码中的任何错误,程序执行正常。但是当我输入三个数字时,我无法在答案框中显示最大的数字。我不认为从盒子中获取数字是一个问题,因为如果我选择的话,我可以单独打印这些数字。但是,我也认为我已经正确地编写了这个方法(想想这里的操作词)。
旁注:我知道我可以使用Math.Max()方法代替if / else语句,但在开始使用内置方法之前,我试图理解基础知识这一点。
private double max(double firstNum, double secNum, double thirdNum)
{
double maxNum = 0;
if (firstNum > secNum && firstNum > thirdNum)
{
maxNum = firstNum;
}
else if (secNum > firstNum && secNum > thirdNum)
{
maxNum = secNum;
}
else
{
maxNum = thirdNum;
}
return maxNum;
}
private void retBtn_Click(object sender, EventArgs e)
{
double num1, num2, num3;
num1 = double.Parse(num1Box.Text);
num2 = double.Parse(num2Box.Text);
num3 = double.Parse(num3Box.Text);
double biggestNum = max(num1, num2, num3);
ansBox.Text = biggestNum.ToString();
}
这是我目前拥有的代码。任何帮助将不胜感激!
编辑:已链接的另一个帖子没有回答我问的相同问题。它显示了如何编写找到最大数字的方法,这是我已经完成的。我遇到的问题是当我按下retBtn时,文本框中没有任何内容。我认为问题在于我的" double maximumNum = max(num1,num2,num3)"或者在我方法的退货声明中。
答案 0 :(得分:0)
您的方法定义为
max(double A, double B, double C)
但你没有涵盖整个组合......让我们用这个反例来分解它:
根据你的逻辑给出这个输入:
double biggestNum = max(10, 10, 1);
然后
//this condition will fail since is a short circuit and firstNum > secNum is false
if (firstNum > secNum && firstNum > thirdNum)
{
maxNum = firstNum;
}
//this condition will fail too since for the same reason
else if (secNum > firstNum && secNum > thirdNum)
{
maxNum = secNum;
}
//you are inferring then that C=1 is the biggest.. BOOM!!!
else
{
maxNum = thirdNum;
}
在你跳过并丢弃最大候选人之前,请先用笔和纸盖住所有可能的组合....
答案 1 :(得分:0)
我假设根据您的评论“我可以单独打印这些数字”,您在连接按钮单击以阅读这些文本框时没有任何问题(并且可能在呈现最高数值时也没有问题)。
我想你试图理解if / else语句是如何工作的,并且混淆了你的方法中没有返回最高数字。正如提到的“ΦXocę웃Пepeúpaツ”,你的逻辑中存在一个缺陷,它导致默认的'else'语句 - >尝试使用> =而不是>
答案 2 :(得分:0)
感谢所有回答的人;我搞定了!向@ΦXocę웃Пepeúpaツ喊出我指出我的逻辑错误,然后@Charles May告诉我调试工具。如果有人有兴趣,这是固定代码:
namespace Passing_Data
{
public partial class Form1 : Form
{
private double maxNum;
public Form1()
{
InitializeComponent();
}
private double max(double num1, double num2, double num3)
{
if (num1 >= num2 && num1 >= num3)
{
maxNum = num1;
}
else if (num2 >= num1 && num2 >= num3)
{
maxNum = num2;
}
else if (num3 >= num1 && num3 >= num2)
{
maxNum = num3;
}
return maxNum;
}
private void retBtn_Click(object sender, EventArgs e)
{
double num1, num2, num3;
num1 = double.Parse(num1Box.Text);
num2 = double.Parse(num2Box.Text);
num3 = double.Parse(num3Box.Text);
maxNum = max(num1, num2, num3);
ansBox.Text = maxNum.ToString();
}