【问题标题】:Excluding non-integers input排除非整数输入
【发布时间】:2020-02-27 11:36:44
【问题描述】:

S 是正整数且>= 5 时,我正在尝试输出"Rose"。 但是,当我输入5.1 时,输出仍然是"Rose"。 我想不通:( [编辑:我忘了说 S 是一个奇数正数,这就是我在代码中包含 S%2 == 1 的原因]

#include <iostream>

using namespace std;

int main()
{
    int S;
    cout << "Please input the size of a rose: " << endl;
    cin >> S;
    if (S%2 == 1 && S >= 5 && sizeof(S) == 4) {
        cout << "Rose" << endl;
    }
    else {
        cout << "Invalid input size!" << endl;
    }
}

【问题讨论】:

  • sizeof(S) == 4 这是毫无意义的。请阅读更多关于sizeof 工作原理en.cppreference.com/w/cpp/language/sizeof
  • 整数不能包含.,并且解析会在第一个不能作为解析类型表示的一部分的字符处停止。
  • sizeof(S)sizeof(int) 完全相同。
  • S%2 == 1 并不意味着S 是一个正整数。来自S &gt;= 5 的肯定是肯定的,所以不清楚肯定的条件是什么。
  • Trying to learn about validation loops 会有所帮助,只需将 double 替换为 int

标签: c++ cin


【解决方案1】:

S 是 "int" 类型,所以当你输入 5.1 时,只有 5 会被读入 S。一种解决方法是将 S1 读为双精度(或字符串等),并检查它是否表示整数,如果是, 将它们转换为 int 并存储在 S 中,否则打印错误消息。

【讨论】:

    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 2023-03-10
    • 2016-02-07
    • 2020-06-21
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多