You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的C++程序需要输入两次才能正常运行?

问题分析与解决方案:C++程序需两次输入才能完成流程的问题

问题根源

你的程序需要两次输入才能结束,核心问题出在这段冗余且逻辑错误的代码上:

  • cin >> jawabsalah强制要求用户额外输入一次内容,这是导致两次输入的直接原因。
  • if(jawabsalah == jawabsalah)是恒成立条件——任何变量与自身比较的结果必然是true,所以这段代码会无条件执行,完全起不到判断作用。

方案1:移除冗余代码(无需处理非法输入)

如果你只需要程序在用户输入baik或buruk后直接结束,删掉那两段多余代码即可。修正后的完整代码:

#include <iostream>
using namespace std;

int main()
{
    string nama = "";

    cout << "Hai, siapa nama kamu?: " << endl;
    cin >> nama;

    cout << "hallo " << nama << "! apa kabar kamu hari ini? " << endl;
    cout << "Baik atau buruk?: " << endl;

    string mood_hari_ini = "";
    cin >> mood_hari_ini;

    if (mood_hari_ini == "buruk") {
        cout << "Aduhh kasian kamu, yang sabar yaa.. :c " << endl;
    }
    if (mood_hari_ini == "baik") {
        cout << "wahhh syukurlahhh.. ^^ " << endl;
    }

    return 0;
}

方案2:处理非法输入(提示用户输入不符合要求)

如果你的本意是当用户输入的不是baik或buruk时给出提示,应该把判断逻辑整合到之前的条件分支中,用else处理异常情况,无需额外添加输入操作。修正后的代码:

#include <iostream>
using namespace std;

int main()
{
    string nama = "";

    cout << "Hai, siapa nama kamu?: " << endl;
    cin >> nama;

    cout << "hallo " << nama << "! apa kabar kamu hari ini? " << endl;
    cout << "Baik atau buruk?: " << endl;

    string mood_hari_ini = "";
    cin >> mood_hari_ini;

    if (mood_hari_ini == "buruk") {
        cout << "Aduhh kasian kamu, yang sabar yaa.. :c " << endl;
    } else if (mood_hari_ini == "baik") {
        cout << "wahhh syukurlahhh.. ^^ " << endl;
    } else {
        // 针对非法输入给出提示
        cout << "Kok malah jawab " << mood_hari_ini << "? kan aku nanya nya baik apa burukk >< " << endl;
    }

    return 0;
}

关键说明

  • 原代码中额外的cin >> jawabsalah完全多余,直接导致了两次输入的问题。
  • 恒成立的if(jawabsalah == jawabsalah)没有实际逻辑价值,属于无效代码。
  • 方案2通过else分支统一处理异常输入,流程更简洁合理,不会强制用户多输入一次。

内容的提问来源于stack exchange,提问作者Athalla 476

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:02:54