我的代码中有错误,它只读取第一个if语句,而其他if不读取
本文关键字:if 读取 语句 其他 第一个 代码 有错误 我的 | 更新日期: 2023-09-27 18:03:43
这是C#程序,我在这行代码中有一个问题:
我输入的数字大于或等于它运行的400 =
我输入的数字小于或等于它运行的500 =
我输入400到500之间的数字,例如401到499 =
I空输入=erorrI输入字母=erorr
请注意,我运行的代码只接受单独运行的整数以及不接受空输入的代码,它也运行
你认为哪里不对?
int parsedValue;
if (int.Parse(txtVacate.Text) <= 400 || int.Parse(txtVacate.Text) >= 500)
MessageBox.Show("Romms provided is not vacant or does not exist at all.");
else if (txtVacate.Text == " ")
MessageBox.Show("You provide empty");
else if (!int.TryParse(txtVacate.Text, out parsedValue))
MessageBox.Show("Please provide right info");
else
{
MySqlConnection connection = null;
string hostname = "localhost";
string database = "aparece_hoteldb";
string username = "root";
string password = "";
connection = new MySqlConnection("host=" + hostname +
";database=" + database +
";username=" + username +
";password=" + password + ";");
string table = "reservations";
string query = "DELETE FROM reservations WHERE RoomNumber = " + txtVacate.Text;
connection.Open();
MySqlDataAdapter da_res = null;
DataSet ds_res = null;
ds_res = new DataSet();
da_res = new MySqlDataAdapter(query, connection);
da_res.Fill(ds_res, table);
MessageBox.Show("Room" + " " + txtVacate.Text + " " + "is now Vacant please reload!");
dataGridView2.DataSource = ds_res.Tables[table];
this.Close();
恐怕您的逻辑是错误的。如果txtVacate.Text
不包含整数,那么您的代码就会爆炸。这是评估不同情况的正确顺序。
int parsedValue = 0;
bool isValid = int.TryParse(txtVacate.Text, out parsedValue));
if (txtVacate.Text == " ") // Better: if (txtVacate.Text.Trim() == string.Empty)
{
MessageBox.Show("You provide empty");
}
else if (!isValid)
{
MessageBox.Show("Please provide right info");
}
else if (parsedValue <= 400 || parsedValue >= 500)
{
MessageBox.Show("Romms provided is not vacant or does not exist at all.");
}
else
{
...
}
您的第一个if语句使用
int.Parse(txtVacate.Text)
对于空值或非数字(文本(值,这将引发FormatException,因此永远不会评估"else-if"情况。
您应该使用TryParse,而不是在第一个"if"中使用Parse,或者捕获FormatException并相应地处理它。
您可以简化几个步骤。
首先,检查以确保输入不是null、空格或空的。
如果有一个值,请解析它以确保它是一个数值。
if (!string.IsNullOrWhiteSpace(txtVacate.Text))
{
in parsedValue = 0;
bool isValid = int.TryParse(txtVacate.Text, out parsedValue));
if (isValid)
{
if (parsedValue <= 400 || parsedValue >= 500)
MessageBox.Show("Romms provided is not vacant or does not exist at all.");
else
{
// main stuff here
}
}
else
{
MessageBox.Show("Please provide right info");
}
else
{
MessageBox.Show("You provide empty");
}
虽然很复杂,但这应该能正确处理所有用例