我正在尝试制作一个程序,要求用户输入我最终会计算的数字,但如果用户输入“x”,则循环将结束。我没有太多但是如果我运行这个程序并输入一个“x”它就会出错,因为它正在寻找的数据类型是双倍的,所以它不能按照我想要的方式工作。有没有一种替代方法,而不是我在这里做的方式,以便循环结束而不是程序窃听?
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
//function
//main function
int main()
{
//variables
double n1, n2;
//input
do {
cout << "Enter the first number \n";
cin >> n1;
cout << "Enter the second number \n";
cin >> n2;
//output
} while (true);
return 0;
}
答案 0 :(得分:1)
让输入值为字符串,然后将它们转换为char数组,然后你可以检查数组中的第一个元素是否为x,如果是,则为break。然后,您可以在将其转换为双精度后执行任何操作。
string n1, n2;
do {
cout << "Enter the first number \n";
cin >> n1;
cout << "Enter the second number \n";
cin >> n2;
char[] n1Array = n1.toCharArray();
if (n1[0] == 'x') break;
char[] n2Array = n2.toCharArray();
n1Double = atof(n1Array);
n2Double = atof(n2Array);
//output
} while (true);
我认为应该这样做。
答案 1 :(得分:1)
您可以将n1
或n2
与x
(字符串)进行比较。如果其中一个等于x
,则终止循环。
#include "stdafx.h"
#include <iostream>
#include <string>
#include <bits/stdc++.h>
using namespace std;
//function
//main function
int main()
{
//variables
string n1, n2;
double n3, n4;
//input
do {
cout << "Enter the first number \n";
cin >> n1;
cout << "Enter the second number \n";
cin >> n2;
if(n1 == "x" || n2 == "x"){ // n1 or n2 with "x" .
break;
}
n3 = stod(n1); // string to double.
n4 = stod(n2);
//output
} while (true);
return 0;
}