【问题标题】:C# passing variables through methods, and converting string to int with methodC#通过方法传递变量,并用方法将字符串转换为int
【发布时间】:2021-10-02 03:19:43
【问题描述】:

我在处理这个项目时遇到了问题。该项目是使用用户输入来获取分数。使用允许用户输入所需分数的循环。我很难将变量传递给我的 ConvertToInt 方法。我想将带有值的变量传递给 ConvertToInt 方法。在 ConvertToInt 方法中,我必须将字符串转换为 int。我现在编写的代码将运行,但在输入分数后会抛出 System.FormatException。我是 C# 新手,不太明白哪里出了问题。

using System;

namespace MethodsAndUnitTestsMethodTestsCampbell
{
    class Program
    {
        private static string GetUserInput(string scores)
        {
            Console.WriteLine("Enter score: ");
            string score = Console.ReadLine();
            score = scores;
            return score;
        }

        private static int ConvertToInt(string scores)
        {
            return Convert.ToInt32(scores);
        }

        static void Main(string[] args)
        {
            string scores = "{C} ";
            GetUserInput(scores);
            ConvertToInt(scores);
            

        }
    }
}

【问题讨论】:

  • 您的GetUserInput 方法在哪里?现在,您正在将字符串 '{C} ' 传递给您的 ConvertToInt 方法,这绝对不能转换为 int。

标签: c# methods


【解决方案1】:

您可以使用Int32.TryParse(String, Int32) 来转换字符串。您的代码将是这样的:

class Program
{
    private static void ConvertToInt32(string input, ref int output)
    {
        if (int.TryParse(input, out int number))
        {
            output = number;
        }
        else
        {
            System.Console.WriteLine($"Cannot convert {input}.");
        }
    }

    private static string GetUserInput(string prompt)
    {
        System.Console.Write(prompt);
        return System.Console.ReadLine();
    }

    static void Main(string[] args)
    {
        string input = GetUserInput("Enter scores: ");
        int scores = 0;
        ConvertToInt32(input, ref scores);
        System.Console.WriteLine($"Scores: {scores}");
    }
}

【讨论】:

    【解决方案2】:

    您没有将 GetUserInput 方法的返回值分配给 scores 变量。以下是更新程序-

    class Program
    {
       private static int ConvertToInt(string scores)
       {
           return Convert.ToInt32(scores);
       }
       private static string GetUserInput(string scores) 
       { 
           Console.WriteLine("Enter score: "); 
           scores = Console.ReadLine();            
           return scores; 
       }
    
       static void Main(string[] args)
       {
           string scores = "{C} ";
           scores = GetUserInput(scores);
           ConvertToInt(scores);
       }
    }
    

    【讨论】:

      【解决方案3】:

      问题是您没有将 GetUserInput 方法的输出值分配给字符串,而是将分配给变量的 "{C} " 值传递给 ConvertToInt32 方法,而 C# 无法将该值转换为诠释! 替换您的 Main 方法:

      string scores = "{C} ";
      GetUserInput(scores);
      ConvertToInt(scores);
      

      有了这行代码:

      string scores = GetUserInput(scores);
      int numericResult = ConvertToInt(scores);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-25
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        • 2013-09-16
        • 2017-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多