为何我的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
相关产品推荐
相关产品推荐

