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日

悬赏问题

  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥200 求能开发抖音自动回复卡片的软件
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云
  • ¥15 C# 调用Bartender打印机打印
  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题
  • ¥50 C#编程中使用printDocument类实现文字排版打印问题
  • ¥15 找会编程的帅哥美女 可以用MATLAB里面的simulink编程,用Keil5编也可以。