感谢您抽出时间阅读我的问题。我只是想知道,无论如何要缩短它;
int nextValue;
int PreValue;
Do // I wanna shorten this up without looping it.
{
cout << "please put something that is greater than the previous value:";
cin >> nextValue
}
while ( nextValue < preValue);
抱歉这个noob问题,还在努力学习c ++
答案 0 :(得分:0)
是的,但不是很多。你的解决方案是8行代码(开始时相当小),甚至可以根据偏好将代码实际压缩为5行......
int nextValue, preValue;
do {
cout << "please put something that is greater than the previous value:";
cin >> nextValue;
} while ( nextValue < preValue);
但是,我认为你可以在你的例子中使用常规的while循环。 preValue
需要初始化,以便您的比较可以为您提供可靠的结果。它现在的方式,preValue
可能是-454234,7654,1,0 ......我们不知道它是什么;它尚未初始化。初始化它,然后使用常规while循环。通过初始化,我的意思是明确地为其分配值。
int nextValue = 0, preValue = INT_MIN;
while (preValue < nextValue){
cout << "please put something that is greater than the previous value:";
cin >> nextValue;
}
如果你想在不使用循环的情况下获取值,另一种方法是定义一个函数并递归调用它。
int getValue(int minValue){
int input;
std::cout << "please put something that is greater than the previous value:";
std::cin >> input;
input > minValue ? return input: return getValue(minValue);
}
value = getValue(preValue);
缩短解决方案绝对是可能的(您可以在技术上将其全部放在一行),但尝试使代码可读并且尽可能易于理解总是好的做法。在我的示例中,getValue()
将继续调用自身,直到用户输入大于最小值的值。最后,它在代码行方面没有太大的不同,但它会留下哪些功能,促使用户输入更短。
int main(){
//other statements here.
int nextValue;
int PreValue;
Do // I wanna shorten this up without looping it.
{
cout << "please put something that is greater than the previous value:";
cin >> nextValue
}
while ( nextValue < preValue);
//more statements here.
}
...变为
int main(){
int minValue = 10;
//other statements.
int value = getValue(minValue);
//more statements
}
显然,递归解决方案的代码比第一个示例中的5行更多,但优势在于它现在处于自己的功能中。如果您需要向用户提示5次不同的时间,则只需要编写int value = getValue(min);
5次而不是整个循环5次。