C# c“我该怎么解决?”;未处理的异常:System.FormatException:输入字符串的格式不正确;
我需要帮助理解为什么我的ID输入被认为是错误的格式 我将插入区域和完整代码,以防万一 代码:C# c“我该怎么解决?”;未处理的异常:System.FormatException:输入字符串的格式不正确;,c#,C#,我需要帮助理解为什么我的ID输入被认为是错误的格式 我将插入区域和完整代码,以防万一 代码: static void AmendPrice(列出糖果) { Console.ForegroundColor=ConsoleColor.White; Console.WriteLine(); Console.WriteLine(“输入ID:”); 字符串id=Convert.ToString(Console.ReadLine()); TSweet Sweet1=新的TSweet(); 字符串nid=“”
static void AmendPrice(列出糖果)
{
Console.ForegroundColor=ConsoleColor.White;
Console.WriteLine();
Console.WriteLine(“输入ID:”);
字符串id=Convert.ToString(Console.ReadLine());
TSweet Sweet1=新的TSweet();
字符串nid=“”;
字符串ns=“”;
单个np=转换为单个(“”);
int ind=0;
foreach(甜中带甜)
{
nid=Sweet.productID;
ns=Sweet.SweetName;
np=甜的。价格;
ind=转换为32(sweets.IndexOf(Sweet));
if(Sweet.productID==id)
{
Console.WriteLine(“找到\n输入新价格:”);
np=Convert.ToSingle(Console.ReadLine());
}
其他的
{
控制台。写入线(“未找到”);
}
}
}
完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ListOfSweets
{
class Program
{
struct TSweet
{
public string productID;
public string SweetName;
public Single Price;
}
static void AddNewSweet(List<TSweet> sweets)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\n\nEnter Product ID:");
string newid = Convert.ToString(Console.ReadLine());
Console.WriteLine("\nEnter Sweet Name:");
string news = Convert.ToString(Console.ReadLine());
Console.WriteLine("\nEnter Price:");
Single newp = Convert.ToSingle(Console.ReadLine());
TSweet Sweet = new TSweet();
Sweet.productID = newid;
Sweet.SweetName = news;
Sweet.Price = newp;
sweets.Add(Sweet);
}
static void ListSweets(List<TSweet> sweets)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\n\nThe list contains:");
foreach (TSweet Sweet in sweets)
{
Console.WriteLine("ID:" + Sweet.productID + "\n"+ "Name:" + Sweet.SweetName + "\n" + "Price:" + Sweet.Price + "\n");
}
}
static void AmendPrice(List<TSweet> sweets)
{
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
Console.WriteLine("Enter ID:");
string id=Convert.ToString(Console.ReadLine());
TSweet Sweet1 = new TSweet();
string nid = "";
string ns = "";
Single np = Convert.ToSingle("");
int ind=0;
foreach (TSweet Sweet in sweets)
{
nid = Sweet.productID;
ns = Sweet.SweetName;
np = Sweet.Price;
ind = Convert.ToInt32(sweets.IndexOf(Sweet));
if (Sweet.productID == id)
{
Console.WriteLine("Found\nEnter New Price:");
np = Convert.ToSingle(Console.ReadLine());
}
else
{
Console.WriteLine("Not Found");
}
}
Sweet1.productID = nid;
Sweet1.SweetName = ns;
Sweet1.Price = np;
sweets.RemoveAt(ind);
sweets.RemoveAt(ind+1);
sweets.RemoveAt(ind+2);
sweets.Add(Sweet1);
}
static void DisplayMenu()
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("\n\n==== MENU ====");
Console.WriteLine("1.. Add new sweet");
Console.WriteLine("2.. Display all sweets");
Console.WriteLine("3.. Amend price");
Console.WriteLine("q.. Quit program");
Console.WriteLine("\nEnter menu option: ");
}
static void Main(string[] args)
{
List<TSweet> sweets = new List<TSweet>();
string choice = "";
while (choice != "q")
{
DisplayMenu();
choice = Console.ReadLine().ToLower();
switch (choice)
{
case "1":
AddNewSweet(sweets);
break;
case "2":
ListSweets(sweets);
break;
case "3":
AmendPrice(sweets);
break;
default:
if (choice != "q")
Console.WriteLine("Invalid option entered.");
break;
}
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间ListOfSweets
{
班级计划
{
结构TSweet
{
公共字符串productID;
公共字符串名称;
公共单一价格;
}
静态void AddNewSweet(列出糖果)
{
Console.ForegroundColor=ConsoleColor.Green;
Console.WriteLine(“\n\n输入产品ID:”);
字符串newid=Convert.ToString(Console.ReadLine());
Console.WriteLine(“\n输入甜美的名称:”);
string news=Convert.ToString(Console.ReadLine());
Console.WriteLine(\n输入价格:);
Single newp=Convert.ToSingle(Console.ReadLine());
TSweet Sweet=新的TSweet();
Sweet.productID=newid;
Sweet.SweetName=新闻;
甜的。价格=新的;
甜食。添加(甜食);
}
静态无效列表糖果(列表糖果)
{
Console.ForegroundColor=ConsoleColor.Red;
Console.WriteLine(“\n\n列表包含:”);
foreach(甜中带甜)
{
Console.WriteLine(“ID:+Sweet.productID+”\n“+”名称:“+Sweet.SweetName+”\n“+”价格:“+Sweet.Price+”\n”);
}
}
静态空隙修正冰(列出糖果)
{
Console.ForegroundColor=ConsoleColor.White;
Console.WriteLine();
Console.WriteLine(“输入ID:”);
字符串id=Convert.ToString(Console.ReadLine());
TSweet Sweet1=新的TSweet();
字符串nid=“”;
字符串ns=“”;
单个np=转换为单个(“”);
int ind=0;
foreach(甜中带甜)
{
nid=Sweet.productID;
ns=Sweet.SweetName;
np=甜的。价格;
ind=转换为32(sweets.IndexOf(Sweet));
if(Sweet.productID==id)
{
Console.WriteLine(“找到\n输入新价格:”);
np=Convert.ToSingle(Console.ReadLine());
}
其他的
{
控制台。写入线(“未找到”);
}
}
Sweet1.productID=nid;
Sweet1.SweetName=ns;
1.价格=np;
甜食。移除(ind);
甜食。去除(ind+1);
甜食。去除(ind+2);
甜味剂。添加(甜味剂1);
}
静态void显示菜单()
{
Console.ForegroundColor=ConsoleColor.Blue;
Console.WriteLine(“\n\n===菜单==”;
Console.WriteLine(“1..添加新甜味”);
Console.WriteLine(“2.显示所有糖果”);
控制台。写线(“3.修改价格”);
Console.WriteLine(“q..Quit程序”);
Console.WriteLine(“\n输入菜单选项:”);
}
静态void Main(字符串[]参数)
{
列表糖果=新列表();
字符串选择=”;
while(选项!=“q”)
{
显示菜单();
choice=Console.ReadLine().ToLower();
开关(选择)
{
案例“1”:
AddNewSweet(糖果);
打破
案例“2”:
列表糖果(糖果);
打破
案例“3”:
甜食;
打破
违约:
如果(选项!=“q”)
Console.WriteLine(“输入的选项无效”);
打破
}
}
}
}
}
正如@Jamiec在评论中指出的,prolem在Single np=Convert.ToSingle(“”)行中
,“
不是有效的单个
,因此转换失败,如果您选择0
只需写入0
但这只是更大问题的一小部分,您有太多的转换(
Convert.To…
),其中大部分都不需要。我可以找到的例子有:
Convert.ToString(Console.ReadLine())
-Console.ReadLine()
已经是字符串,不需要转换Convert.ToInt32(sweets.IndexOf(Sweet))
-sweets.IndexOf(Sweet)
已经是一个int,不需要转换不是错误,而是:不需要转换.ToString(Console.ReadLine())-它已经是一个字符串。你有没有试过调试你的程序,比如用调试器一步一步地调试?您试图转换为single/int的字符串的值是多少?
single np=convert.ToSingle(“”)代码>是无效的行。空白条纹
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ListOfSweets
{
class Program
{
struct TSweet
{
public string productID;
public string SweetName;
public Single Price;
}
static void AddNewSweet(List<TSweet> sweets)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\n\nEnter Product ID:");
string newid = Convert.ToString(Console.ReadLine());
Console.WriteLine("\nEnter Sweet Name:");
string news = Convert.ToString(Console.ReadLine());
Console.WriteLine("\nEnter Price:");
Single newp = Convert.ToSingle(Console.ReadLine());
TSweet Sweet = new TSweet();
Sweet.productID = newid;
Sweet.SweetName = news;
Sweet.Price = newp;
sweets.Add(Sweet);
}
static void ListSweets(List<TSweet> sweets)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\n\nThe list contains:");
foreach (TSweet Sweet in sweets)
{
Console.WriteLine("ID:" + Sweet.productID + "\n"+ "Name:" + Sweet.SweetName + "\n" + "Price:" + Sweet.Price + "\n");
}
}
static void AmendPrice(List<TSweet> sweets)
{
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
Console.WriteLine("Enter ID:");
string id=Convert.ToString(Console.ReadLine());
TSweet Sweet1 = new TSweet();
string nid = "";
string ns = "";
Single np = Convert.ToSingle("");
int ind=0;
foreach (TSweet Sweet in sweets)
{
nid = Sweet.productID;
ns = Sweet.SweetName;
np = Sweet.Price;
ind = Convert.ToInt32(sweets.IndexOf(Sweet));
if (Sweet.productID == id)
{
Console.WriteLine("Found\nEnter New Price:");
np = Convert.ToSingle(Console.ReadLine());
}
else
{
Console.WriteLine("Not Found");
}
}
Sweet1.productID = nid;
Sweet1.SweetName = ns;
Sweet1.Price = np;
sweets.RemoveAt(ind);
sweets.RemoveAt(ind+1);
sweets.RemoveAt(ind+2);
sweets.Add(Sweet1);
}
static void DisplayMenu()
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("\n\n==== MENU ====");
Console.WriteLine("1.. Add new sweet");
Console.WriteLine("2.. Display all sweets");
Console.WriteLine("3.. Amend price");
Console.WriteLine("q.. Quit program");
Console.WriteLine("\nEnter menu option: ");
}
static void Main(string[] args)
{
List<TSweet> sweets = new List<TSweet>();
string choice = "";
while (choice != "q")
{
DisplayMenu();
choice = Console.ReadLine().ToLower();
switch (choice)
{
case "1":
AddNewSweet(sweets);
break;
case "2":
ListSweets(sweets);
break;
case "3":
AmendPrice(sweets);
break;
default:
if (choice != "q")
Console.WriteLine("Invalid option entered.");
break;
}
}
}
}
}