【问题标题】:Yes or No program for asking permission to rate an app是或否请求许可对应用程序进行评分的程序
【发布时间】:2020-10-18 05:52:12
【问题描述】:

我是编码方面的新手(比如 2 周),我一直在尝试让程序脱离脑海来练习,所以不要对我这么粗暴 :D。我今天尝试的是制作一个需要插入字母的程序,因为我一直在玩int函数,所以我想稍微改变一下。 所以我一直在努力让这个工作,虽然它执行程序,当你输入一个字母时,它只会关闭程序。感谢任何帮助,如果你能解释我所做的错误。谢谢大家!! :D

#include <iostream>

int main()
{
    
    char Answer;
    char responsetype;

    std::cout<<"Please rate this app\n";
    std::cin>> Answer;
while (responsetype=false)
        if (Answer=='Y')
        {
            responsetype=true;
            std::cout<< "Thanks for rating :D\n";
            }
            else if (Answer/='Y')
            {
                if (Answer=='N')
                {
                    responsetype=true;
                    std::cout<< "awwww... Okay then.. :(\n";
                }
                    else(true);
                        responsetype=false;
                        std::cout<<"You need to answer Y or N :/\n";
            }
            
                
return 0;

【问题讨论】:

  • while(responsetype=false) 是做什么的?
  • 我用它作为,虽然这个有价值的(响应类型)是假的,但它应该做一个循环。因此,如果您键入“Y”或“N”之外的内容,它应该执行一个循环。
  • Answer /= 'Y' 是一个部门,绝对不是你想要的。不等式通过!= 完成
  • 您的意思是让 responsetype 成为布尔值,然后检查 while(responsetype==false) 吗?还是真的应该是一个字符?
  • 好吧,我尝试使用布尔值,但它总是将我的第一个答案输入为“Y”。

标签: c++ char cin


【解决方案1】:

您的代码存在一些问题,因此我将尝试列出我发现的问题。

  1. while(responsetype=false)
    似乎是您的问题的原因,您在此处将 false 分配给 response,然后检查 responsetype 始终为 false。
  2. 您需要在 for 循环中使用 std::cin&gt;&gt;Answer;,以便用户可以实际更改他们的分析器。
  3. if (Answer/='Y') => if (Answer!='Y')
  4. else(true);
    这没有任何作用,你可以一起删除它,但你最初想要的可能是else{...}

【讨论】:

    【解决方案2】:

    我改变的地方:

    1. 将响应类型从 char 更改为 boolean

    2. 将整体结构更改为 switch case 而不是 if 语句

    3. 最后添加了getchar(),所以程序最后不会自动关闭

      #include <iostream>
      
      int main() {
      
      char Answer;
      bool responsetype = false;
      
      std::cout<<"Please rate this app\n";
      std::cin>> Answer;
      
      while (!responsetype){
         switch(Answer)
         {
           case 'Y':
             responsetype=true;
             std::cout<< "Thanks for rating :D\n";
             break;
           case 'N':
             responsetype=true;
             std::cout<< "awwww... Okay then.. :(\n";
             break;
           default:
             responsetype=false;
             std::cout<<"You need to answer Y or N :/\n";
         }
      }
      
      getchar(); // Asks for another input before closing console          
      return 0;
      }
      

    【讨论】:

    • 好吧,我还不知道switch、getchar和case,所以我去google一下!非常感谢!!!!
    • 没问题。如果代码有效,如果您可以将其设置为答案,那就太好了。
    • 会做 :D 玩得开心!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 2013-03-29
    相关资源
    最近更新 更多