Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c“我该怎么解决?”;未处理的异常:System.FormatException:输入字符串的格式不正确;_C# - Fatal编程技术网

C# c“我该怎么解决?”;未处理的异常:System.FormatException:输入字符串的格式不正确;

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=“”

我需要帮助理解为什么我的ID输入被认为是错误的格式

我将插入区域和完整代码,以防万一

代码:

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;
                    }
                }
            }
        }
    }