System.FormatException 当 while 循环添加到控制台计算器时收到
System.FormatException received when while loop added to console calculator
我正在用 C# 制作一个控制台计算器,它要求用户输入 2 个数字和一个字符。
代码如下:
using System;
namespace Calculator
{
public static class Calculator
{
public static void welcome()
{
Console.WriteLine("Welcome to Calculator!");
Console.WriteLine();
}
public static void printResult(int result)
{
Console.WriteLine($"Answer: {result}");
}
public static void calculate(int num1r, char operr, int num2r)
{
int result_b = 0;
switch(operr)
{
case '+':
result_b = num1r + num2r;
break;
case '-':
result_b = num1r - num2r;
break;
case '*':
result_b = num1r * num2r;
break;
case '/':
result_b = num1r / num2r;
break;
}
printResult(result_b);
}
public static void askUser()
{
Console.WriteLine("Enter a number: ");
string str1 = Console.ReadLine();
int num1 = (int)Convert.ToInt32(str1);
Console.WriteLine("Enter another number: ");
string str2 = Console.ReadLine();
int num2 = (int)Convert.ToInt32(str2);
Console.WriteLine("Enter an operator: ");
char oper = (char)Console.Read();
Console.WriteLine();
calculate(num1, oper, num2);
}
public static void Main(string[] args)
{
welcome();
askUser();
}
}
}
当我 运行 这段代码时,控制台看起来像这样:
Welcome to Calculator!
Enter a number:
23424
Enter another number:
5232
Enter an operator:
+
Answer: 28656
我想添加一个 while 循环,以便它可以多次询问用户输入,如果用户需要的话。所以我在这个程序中添加了一些代码:
using System;
namespace Calculator
{
public static class Calculator
{
public static void welcome()
{
Console.WriteLine("Welcome to Calculator!");
Console.WriteLine();
}
public static void printResult(int result)
{
Console.WriteLine($"Answer: {result}");
}
public static void calculate(int num1r, char operr, int num2r)
{
int result_b = 0;
switch (operr)
{
case '+':
result_b = num1r + num2r;
break;
case '-':
result_b = num1r - num2r;
break;
case '*':
result_b = num1r * num2r;
break;
case '/':
result_b = num1r / num2r;
break;
}
printResult(result_b);
}
public static void askUser()
{
Console.WriteLine("Enter a number: ");
string str1 = Console.ReadLine();
int num1 = (int)Convert.ToInt32(str1);
Console.WriteLine("Enter another number: ");
string str2 = Console.ReadLine();
int num2 = (int)Convert.ToInt32(str2);
Console.WriteLine("Enter an operator: ");
char oper = (char)Console.Read();
Console.WriteLine();
calculate(num1, oper, num2);
}
public static void Main(string[] args)
{
bool bool1 = true;
while (bool1 == true)
{
welcome();
askUser();
Console.WriteLine("Do you want to continue?(y/n only) ");
switch(Console.Read())
{
case 'y':
Console.WriteLine("Ok!");
break;
case 'n':
Console.WriteLine("Thank you for using Calculator!");
bool1 = false;
break;
}
}
}
}
}
但现在我得到一个例外:
System.FormatException: 'Input string was not in a correct format.'
它指向行int num1 = (int)Convert.ToInt32(str1);
有关更多信息,我正在使用 Visual Studio。
您需要像这样进行一些更改:
using System;
namespace Calculator
{
public static class Calculator
{
public static void welcome()
{
Console.WriteLine("Welcome to Calculator!");
Console.WriteLine();
}
public static void printResult(int result)
{
Console.WriteLine($"Answer: {result}");
}
public static void calculate(int num1r, char operr, int num2r)
{
int result_b = 0;
switch (operr)
{
case '+':
result_b = num1r + num2r;
break;
case '-':
result_b = num1r - num2r;
break;
case '*':
result_b = num1r * num2r;
break;
case '/':
result_b = num1r / num2r;
break;
}
printResult(result_b);
}
public static void askUser()
{
Console.WriteLine("Enter a number: ");
string str1 = Console.ReadLine();
int num1 = (int)Convert.ToInt32(str1);
Console.WriteLine("Enter another number: ");
string str2 = Console.ReadLine();
int num2 = (int)Convert.ToInt32(str2);
Console.WriteLine("Enter an operator: ");
char oper = Console.ReadLine()[0];
Console.WriteLine();
calculate(num1, oper, num2);
}
public static void Main(string[] args)
{
bool bool1 = true;
while (bool1 == true)
{
welcome();
askUser();
Console.WriteLine("Do you want to continue?(y/n only) ");
var continueSt = Console.ReadLine();
switch (continueSt)
{
case "y":
case "Y":
break;
default:
Console.WriteLine("Thank you for using Calculator!");
bool1 = false;
break;
}
}
Console.WriteLine("Bye!");
Console.ReadKey();
}
}
}
}
我正在用 C# 制作一个控制台计算器,它要求用户输入 2 个数字和一个字符。
代码如下:
using System;
namespace Calculator
{
public static class Calculator
{
public static void welcome()
{
Console.WriteLine("Welcome to Calculator!");
Console.WriteLine();
}
public static void printResult(int result)
{
Console.WriteLine($"Answer: {result}");
}
public static void calculate(int num1r, char operr, int num2r)
{
int result_b = 0;
switch(operr)
{
case '+':
result_b = num1r + num2r;
break;
case '-':
result_b = num1r - num2r;
break;
case '*':
result_b = num1r * num2r;
break;
case '/':
result_b = num1r / num2r;
break;
}
printResult(result_b);
}
public static void askUser()
{
Console.WriteLine("Enter a number: ");
string str1 = Console.ReadLine();
int num1 = (int)Convert.ToInt32(str1);
Console.WriteLine("Enter another number: ");
string str2 = Console.ReadLine();
int num2 = (int)Convert.ToInt32(str2);
Console.WriteLine("Enter an operator: ");
char oper = (char)Console.Read();
Console.WriteLine();
calculate(num1, oper, num2);
}
public static void Main(string[] args)
{
welcome();
askUser();
}
}
}
当我 运行 这段代码时,控制台看起来像这样:
Welcome to Calculator!
Enter a number:
23424
Enter another number:
5232
Enter an operator:
+
Answer: 28656
我想添加一个 while 循环,以便它可以多次询问用户输入,如果用户需要的话。所以我在这个程序中添加了一些代码:
using System;
namespace Calculator
{
public static class Calculator
{
public static void welcome()
{
Console.WriteLine("Welcome to Calculator!");
Console.WriteLine();
}
public static void printResult(int result)
{
Console.WriteLine($"Answer: {result}");
}
public static void calculate(int num1r, char operr, int num2r)
{
int result_b = 0;
switch (operr)
{
case '+':
result_b = num1r + num2r;
break;
case '-':
result_b = num1r - num2r;
break;
case '*':
result_b = num1r * num2r;
break;
case '/':
result_b = num1r / num2r;
break;
}
printResult(result_b);
}
public static void askUser()
{
Console.WriteLine("Enter a number: ");
string str1 = Console.ReadLine();
int num1 = (int)Convert.ToInt32(str1);
Console.WriteLine("Enter another number: ");
string str2 = Console.ReadLine();
int num2 = (int)Convert.ToInt32(str2);
Console.WriteLine("Enter an operator: ");
char oper = (char)Console.Read();
Console.WriteLine();
calculate(num1, oper, num2);
}
public static void Main(string[] args)
{
bool bool1 = true;
while (bool1 == true)
{
welcome();
askUser();
Console.WriteLine("Do you want to continue?(y/n only) ");
switch(Console.Read())
{
case 'y':
Console.WriteLine("Ok!");
break;
case 'n':
Console.WriteLine("Thank you for using Calculator!");
bool1 = false;
break;
}
}
}
}
}
但现在我得到一个例外:
System.FormatException: 'Input string was not in a correct format.'
它指向行int num1 = (int)Convert.ToInt32(str1);
有关更多信息,我正在使用 Visual Studio。
您需要像这样进行一些更改:
using System;
namespace Calculator
{
public static class Calculator
{
public static void welcome()
{
Console.WriteLine("Welcome to Calculator!");
Console.WriteLine();
}
public static void printResult(int result)
{
Console.WriteLine($"Answer: {result}");
}
public static void calculate(int num1r, char operr, int num2r)
{
int result_b = 0;
switch (operr)
{
case '+':
result_b = num1r + num2r;
break;
case '-':
result_b = num1r - num2r;
break;
case '*':
result_b = num1r * num2r;
break;
case '/':
result_b = num1r / num2r;
break;
}
printResult(result_b);
}
public static void askUser()
{
Console.WriteLine("Enter a number: ");
string str1 = Console.ReadLine();
int num1 = (int)Convert.ToInt32(str1);
Console.WriteLine("Enter another number: ");
string str2 = Console.ReadLine();
int num2 = (int)Convert.ToInt32(str2);
Console.WriteLine("Enter an operator: ");
char oper = Console.ReadLine()[0];
Console.WriteLine();
calculate(num1, oper, num2);
}
public static void Main(string[] args)
{
bool bool1 = true;
while (bool1 == true)
{
welcome();
askUser();
Console.WriteLine("Do you want to continue?(y/n only) ");
var continueSt = Console.ReadLine();
switch (continueSt)
{
case "y":
case "Y":
break;
default:
Console.WriteLine("Thank you for using Calculator!");
bool1 = false;
break;
}
}
Console.WriteLine("Bye!");
Console.ReadKey();
}
}
}
}