为什么此代码只能识别文本文件中的第一行?输入任何大于 1 的数字都会返回"Atomic Number Not Found"
Why does this code only recognize the first line in the text file? Inputting any number greater than 1 returns "Atomic Number Not Found"
我想制作一个程序,让用户输入一个数字,它会搜索我制作的文本文件,看看这个数字是否是原子序数,然后从周期性文本文件中提取所有细节并显示信息。但是,当用户输入任何大于1的数字时,它会显示未找到的原子序数。
我尝试过的一个解决方案是制作一个for循环,它会一行一行地连续运行,直到找到它,但这并没有奏效,只让它显示了几次"未找到的原子序数"。
#include "pch.h"
#include <string>
#include <iomanip>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream file_("periodicInfo.txt");
int atomNumReq;
cout << "Please enter atomic number: ";
cin >> atomNumReq;
if (file_.is_open())
{
string Symbol;
string Name;
int atomNum;
int mass;
char line;
while (file_ >> atomNum >> Symbol >> Name >> mass)
{
if (atomNumReq == atomNum) {
cout << atomNum << " " << Symbol << " " << Name << " " << mass << 'n';
}
else {
cout << "Atomic Number Not Found.";
}
}
file_.close();
}
return 0;
}
我希望它能显示原子序数的行信息。我把文本文件安排成第1行从数字1开始,再加上文本"1H Hydrogen 1.01",文件的第2行是"2He Helium 4.00",等等,一直到最后一个原子序数。当用户输入数字1时,它将正确显示文本文件中的第一行。当用户输入任何大于1的数字时,它会显示"未找到原子序数">
1.01
不是整数值,因此file_ >> atomNum >> Symbol >> Name >> mass
会将1
读入mass
,但会将.01
留在缓冲区中;在那之后,可能一切都一团糟。
将mass
定义为。。。
double mass;
情况应该会好转。
进一步地,将具有一些适当条件的cout << "Atomic Number Not Found.";
置于循环之外;否则,在找到正确的行之前,每一行都会收到此消息。
通过将质量更改为double而不是int来修复此问题。出现的另一个问题是,它为之前的所有数字显示"未找到原子序数"。例如,如果输入为3,它将在显示第三个原子序数之前显示两次错误。为了解决这个问题,我加入了一个新的if语句来解决这个问题。
if (atomNumReq != atomNum) continue;
相关文章:
- 查找最接近的大于当前数字的数字的索引
- 如何找到大于整数的最小数字
- 如何查找数字大于 5 的数字总和
- 为什么 CSpinButtonCtrl 不能正确处理大于 1000 的数字?
- 计算向量中大于数字的元素
- 如何在向量中找到大于某些数字的所有元素
- 如何在给出前两个数字的级数中找到大于 x 的第 n 个最小子数组总和?
- 显示用户输入的平均数大于 50 和所有可被 3 整除的数字的乘积
- 如何在数字大于类型 size_t 的最大数量时使用 std::bitset
- 如何将一个数字(大于8个字节)从字符阵列转换为其ASCII表示
- 如何生成数字,直到它们大于10 000
- C 用户输入4个数字,并且该程序检查它们大于少于
- 为什么此代码只能识别文本文件中的第一行?输入任何大于 1 的数字都会返回"Atomic Number Not Found"
- 给定一个数字n,打印序列中大于或等于n的第一个数字
- bignumber.h arduino如何解析大于10位数字的数字
- 使用单个堆栈的中缀到后缀不适用于大于 9 的数字
- 在字符串中的一行中搜索大于0的数字
- 从字符串转换为数字大于 std::numeric_limit<double>::d igits10 的双精度
- 在C++中打开一个数字大于9的COM端口
- 检查数字是否为完全平方数(数字大于15位)