c++ - 努力让我的 switch 语句起作用
问题描述
我正在尝试创建一个 c++ 程序以在用户输入 0 和 9 之间的整数值时返回一个数字(拼写出来),任何人都可以找出我出错的地方吗?提前致谢!
#include <iostream>
using namespace std;
int main(){
int numinput;
string numberWritten;
cout << "Enter a whole number between 0 and 9" << endl;
cin >> numinput;
switch (numinput) {
case 0:
numberWritten = "Zero";
break;
case 1:
numberWritten = "One";
break;
case 2:
numberWritten = "Two";
break;
case 3:
numberWritten = "Three";
break;
case 4:
numberWritten = "Four";
break;
case 5:
numberWritten = "Five";
break;
case 6:
numberWritten = "Six";
break;
case 7:
numberWritten = "Seven";
break;
case 8:
numberWritten = "Eight";
break;
case 9:
numberWritten = "Nine";
break;
default: "Not a number I know";
return numberWritten;
}
}
解决方案
将 替换为switch
数组:
static const char * numbers_text[] =
{
"Zero", "One", "Two", "Three", "Four",
"Five", "Six", "Seven", "Eight", "Nine",
};
//...
cout << "Enter a whole number between 0 and 9" << endl;
cin >> numinput;
if ((num_input >= 0) && (num_input <= 9))
{
cout << numbers_text[numinput] << "\n";
}
else
{
cout << "Unsupported number.\n";
}
switch
数组或查找方法避免了语句的任何问题。
更少的代码行,更少的注入错误的机会。
推荐阅读
- node.js - 无法连接到在 Kubernetes 上运行的 Docker 容器中的套接字
- html - HTML 自定义组件 - 样式表问题
- mysql - laravel eloquent join where 子句与子查询以使用列名比较不起作用
- algorithm - 基于球员等级和力量优化球队阵型的算法
- c# - Unity3D人脸对象在哪里移动
- shell - FFMPEG 调整已处理视频的大小
- sql - 查询 ActiveRecord 语法
- ignite - 当 3rd 方 SQL Server 数据库直接更改某些内容时,Apache Ignite 可以更新吗?
- scala - Scala 物理目录结构的最佳实践
- reactjs - Fetch API 无法加载 localhost:(port&path)。不支持 URL 方案“localhost”