【发布时间】:2010-04-03 20:20:04
【问题描述】:
用户输入示例:
PA1 9 //correct
PJ1 9 //wrong, error printed "Invalid row" because it is not between A and I
PA11 9 //wrong, error printer "Invalid column" because it is not between 1 and 9.
我遇到的问题是它应该清除剩余的输入,然后要求用户再次输入“移动”,它不是。
我哪里做错了?我已经做了一段时间了,仍然没有进展..
void clearInput()
{
cin.clear();
}
bool getCoords(int & x, int & y)
{
char row;
while(true){
cin>>row>>y;
row=toupper(row);
if(/*(id=='P' || id=='p' || id=='D' || id=='d') && */row>='A' && row<='I' && isalpha(row) && y>=1 && y<=9){
x=row-'A';
y=y-1;
return true;
}
else if(!(y>=1 && y<=9)){
cout<<"Invalid column\n"<< endl << endl;
cout<<y;
clearInput();
cout<<y;
//return false;
}
else{
cout<<"Invalid row\n"<< endl << endl;
clearInput();
//cout<<x<<y;
//return false;
}
}
}
【问题讨论】:
-
实际上,我不知道这是否有任何意义,只需要一点代码。所以我正在开发数独游戏,基本上只要需要任何类型的用户输入,它如果有任何错误,询问“输入动作”,它应该说明该错误,然后像以前一样再次打印板,并要求输入动作。我的逻辑在这里的某个地方有缺陷:/跨度>