【发布时间】:2011-01-08 18:20:38
【问题描述】:
我最近才开始学习 C++,当 while 循环的条件是来自用户的双精度输入时,我在使用 while 循环时遇到了一点问题。我知道如果用户没有输入与 double 类型兼容的值,那么循环会自动中断。问题是我的控制台应用程序在输入除双精度以外的任何内容时退出。
我正在进行的当前练习要求使用 while 循环和 if 语句来计算输入的测量值并输出总数。用户输入一个值,然后输入测量系统(即 25 m 代表 25 米)。它还必须记录并输出输入的最高和最低值。
double value = 0;
double total = 0;
double high = 0;
double low = 0;
string unit = " ";
while (cin >> value >> unit && unit != "convert")
{
if (unit == "in") {total = total+(value*2.54);// in = inches converting to cm
if (value*2.54 > high) high = value;
if (value*2.54 < low) low = value;
}
else if (unit == "m"){total = total+(value*100);// m = metres, converting to cm
if (value*100 > high) high = value;
if (value*100 < low) low = value;
}
else if (unit == "ft"){total = total+(value*30.48);// ft = feet, converting to ft
if (value*30.48 > high) high = value;
if (value*30.48 < low) low = value;
}
else if (unit == "cm"){total = total+value;// cm = centremetres
if (value*2.54 > high) high = value;
if (value*2.54 < low) low = value;
}
else cout << "Unable to calculate unit type - " << unit << endl;
value = 0;
}
cout << "Total length in centre-metres: " << total << endl
<< "Total length in metres: " << total/100 << endl
<< "Total length in feet: " << total/30.48 << endl
<< "Total length in inches: " << total/2.54 << endl
<< "\nHighest value: " << high << ", Lowest value: " << low << endl;
keep_window_open();
return 0;
keep_window_open() 是我的 C++ 书附带的自定义头文件的一部分,它所做的只是要求用户输入一个字符以退出。
我知道程序的当前状态有点臃肿,但我想先让它正常工作。我不得不使用一种解决方法,如果用户输入“转换”作为一个单元,则循环被终止,所以我实际上可以查看它是否正常工作。当值不是双精度值时,程序会完成/完成其任务,但结果会在控制台窗口上闪烁,然后立即退出。
感谢任何帮助。
【问题讨论】:
标签: c++ loops while-loop