Ds69 2022-03-21 16:53 采纳率: 66.7%
浏览 52
已结题

变量怎么禁止重复初始化?

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图

#include
#include
#include
using namespace std;
static int orangenum=0, applenum=0, peachnum=0;
class fruit
{
private:
string m_Name;
string m_origin;
int m_weith;
int m_level;
public:
string Name(string name)
{
m_Name = name;
return m_Name;
}
string Origin(string origin)
{
m_origin = origin;
return m_origin;
}
int weith(int weith)
{
m_weith = weith;
return m_weith;
}
int level(int level)
{
m_level = level;
return m_level;
}
void output()
{
if (m_weith > 100 && m_level == 1 && m_Name == "orange")
{
orangenum++;
}
if (m_weith > 100 && m_level == 1 && m_Name == "apple")
{
applenum++;
}
if (m_weith > 100 && m_level == 1 && m_Name == "peach")
{
peachnum++;
}
cout << "orange: " << orangenum << " ";
cout << "apple: " << applenum << " ";
cout << "peach: " << peachnum << " ";
}
};
int main()
{
int n, i;
cin >> n;
string Name;
string origin;
int weith;
int level;
fruit A;
for (i = 0; i < n; i++)
{
cin >> Name >> origin >> weith >> level;
A.Name(Name);
A.Origin(origin);
A.weith(weith);
A.level(level);
}
A.output();
system("pause");
return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

怎么可以防止变量重复初始化

  • 写回答

6条回答 默认 最新

  • 关注

    初始化就是赋值,只有常量才能一次初始化后无法更改,其它变量无法做到。
    无瑕疵的leve应该时0,你都写成1了。另外,每次输入的时候,没有更新static变量的值。
    你的代码修改如下:

    #include <iostream>
    #include <string>
    using namespace std;
    static int orangenum = 0, applenum = 0, peachnum = 0;
    class fruit
    {
    private:
        string m_Name;
        string m_origin;
        int m_weith;
        int m_level;
    public:
        string Name(string name)
        {
            m_Name = name;
            return m_Name;
        }
        string Origin(string origin)
        {
            m_origin = origin;
            return m_origin;
        }
        int weith(int weith)
        {
            m_weith = weith;
            return m_weith;
        }
        int level(int level)
        {
            m_level = level;
            return m_level;
        }
    
        void deal() 
        {
            if (m_weith >= 100 && m_level == 0 && m_Name == "orange")
            {
                orangenum++;
            }
            if (m_weith >= 100 && m_level == 0 && m_Name == "apple")
            {
                applenum++;
            }
            if (m_weith >= 100 && m_level == 0 && m_Name == "peach")
            {
                peachnum++;
            }
        }
    
        void output()
        {
            
            cout << "orange: " << orangenum << " ";
            cout << "apple: " << applenum << " ";
            cout << "peach: " << peachnum << " ";
        }
    };
    int main()
    {
        int n, i;
        cin >> n;
        string Name;
        string origin;
        int weith;
        int level;
        fruit A;
        for (i = 0; i < n; i++)
        {
            cin >> Name >> origin >> weith >> level;
            A.Name(Name);
            A.Origin(origin);
            A.weith(weith);
            A.level(level);
            A.deal();
        }
        A.output();
        system("pause");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月21日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题