好吧,这是一个两部分的问题,我试图最好地解释我的疑问:
代码很简单,用户不断输入成绩,程序会对其进行计数,一旦用户给出EOF条目,程序会在最后显示每个成绩的最终计数。
1) 当我运行代码时,程序会正确地跟踪我输入的每个等级的计数,但总是落在默认情况下,即使输入是正确的!为什么会这样?
2) 因此,我不完全确定“cin.get()”是如何工作的,但如果我是对的,它会接受用户输入的任何内容的第一个字符。在这里,我把“grade”作为一个整数变量,因为教科书就是这么做的,我试图理解他为什么这么做。由于grade是一个整数变量,我最终将字符值作为输入,因此我事先检查了我输入的字符值是否最终存储为其ASCII值。然而,即使我在我的开关盒中放置了字符,程序仍然能够保持工作-
#include<iostream>
using namespace std;
void main()
{
int grade;
unsigned int countA=0;
unsigned int countB=0;
unsigned int countC=0;
cout << "Keep entering Grades, or EOF to Quit: ";
while ((grade=cin.get()) != EOF)
{
switch (grade)
{
case 'A':
case 'a':
++countA;
break;
case 'B':
case 'b':
++countB;
break;
case 'C':
case 'c':
++countC;
break;
default:
cout << "Wrong Entry";
cout << endl;
break;
}
}
cout << "A count: " << countA << endl;
cout << "B Count: " << countB << endl;
cout << "C count: " << countC << endl;
getchar();
}
我猜您的输入是:
A后跟回车
B后跟回车
C后跟回车
等
当你这么做的时候,
对cin::get()
的第一次调用返回'A'
对cin::get()
的下一个调用返回换行符'\n'
对cin::get()
的下一个调用返回'B'
对cin::get()
的下一个调用返回'\n'
对cin::get()
的下一个调用返回'C'
对cin::get()
的下一个调用返回'\n'
。
等
因此,在对您认为是有效输入的字符进行每次“成功”处理后,它还会处理换行字符,换行字符由switch
语句的default:
部分处理。
如果添加代码以忽略换行符,则不会看到从default:
子句打印的输出:
case '\n':
break;
如果希望能够忽略所有空白字符,可以使用:
char grade;
while ( std::cin >> grade )
{
...
}
如果这样做,则不需要代码来处理Switch
语句中的换行符。
我需要有关switch的帮助,这是我需要帮助的代码部分。 在P之后的下一种情况下,我如何才能得到一个“回车”键。我想要的是,如果用户只按了回车键,那么程序将播放另一个回合。我在考虑做字符串。valueOf(kb.nextLine())但这不起作用。 谢谢你的帮助。
问题内容: 当您到达Go案例的结尾时,会遇到下一个案例,还是假设大多数应用程序不想失败,会发生什么? 问题答案: 不,默认情况下,Go switch语句不会通过。如果 确实 希望其失败,则必须显式使用“ fallthrough”语句。从规格: 在case或default子句中,最后一个非空语句可以是一个(可能标记为)“ fallthrough”语句,以指示控制权应从此子句的末尾流到下一个子句的第一
C#7引入了一个名为模式的新特性,您可以将其用于Is-Express或Switch案例,如下所示: 你可能会认为它会放在箱子#1里,因为它是同一种类型,但它没有。
问题内容: 只是一个简单的问题: 如何清除外壳中的屏幕?我见过类似的方式: 这只是打开Windows cmd,清除屏幕并关闭,但是我希望清除外壳窗口 (PS:我不知道这有帮助,但是我使用的是Python 3.3.2版) 谢谢:) 问题答案: 对于macOS / OS X,您可以使用子进程模块并从外壳程序中调用“ cls”: 为了防止在窗口顶部显示“ 0”,请用以下内容替换第二行: 对于Linux,
我正在尝试在我的应用程序中实现暗模式。我决定使用共享首选项来保存当前的暗模式状态。问题是,除了SettingsActivity之外,共享首选项总是返回所有活动的默认值。 我试过: 使用而不是 更改首选项的名称 将更改为清单为false 正在清除应用程序缓存 删除应用程序数据 我的manifest.xml: 我的家庭活动的一部分: 我的设置活动:
这是我的用户。JAVA 这是我的地址。JAVA 但是当我试图持久化对象时,我得到了这个异常 错误不会来,如果我删除"NOTNULL"约束从FORIGN_KEY"USER_ID",但我需要使它作为一个NOTNULL列我应该怎么做。 这是我的注册方法 这是我的SQL脚本