【问题标题】:Convert sting input to int C#将字符串输入转换为 int C#
【发布时间】:2018-10-23 22:39:11
【问题描述】:

所以我必须制作一个程序,当用户在控制台应用程序中输入“FIN”时停止,否则程序会继续。问题是我无法将之后给出的数字转换为整数。 这是代码

[https://pastebin.com/USTia33i]

Cet algorithme, permet l'identifiaction de numéros de cartes de crédit ainsi que leur 验证。倒入cela, l'utilisateur entre le numéro sous la forme ABCDEF GH IJKL MNOP, puis selon le type de carte, l'algorithme transforme le numéro sous la forme appropriée et fait la validation de la carte en fonction de son type。

using System;
using static System.Console;
using static System.Convert;
using static System.Math;

namespace Partie_2_Cartes_de_crédit
{
    class Program
    {

        static void Main()
        {
            // Numéro de carte de crédit séparé blocs
            Write("Entrez les 6 premiers chiffres de votre carte (ABCDEF) ou (FIN) pour arreter : ");
            sting abcdef = ReadLine();

            for (; ; )
            {
                /***/
                if (abcdef == "FIN") break;
                /***/
                {

                    // Numéro de carte de crédit séparé blocs         
                    Write("Entrez les 2 chiffres suivants de votre carte (GH) : ");
                    int gh = ToInt32(ReadLine());

                    Write("Entrez les 4 chiffres suivants de votre carte (IJKL) : ");
                    int ijkl = ToInt32(ReadLine());

                    Write("Entrez les 4 chiffres suivants de votre carte (MNOP) : ");
                    int mnop = ToInt32(ReadLine());

                    // Vérification pour une carte American Express
                    if (abcdef / 10000 == 34 || abcdef / 10000 == 37)
                    {
                        int abcde = abcdef / 10;        // Numéro de carte de crédit séparé blocs
                        int fghijk = abcdef % 10 * 100000 + gh * 1000 + ijkl / 10;
                        int lmnop = ijkl % 10 * 10000 + mnop;
                        WriteLine("Le numéro " + abcde + " " + fghijk + " " + lmnop +
                            " indique une carte American Express, à valider en ligne.");
                    }

                    else
                    {
                        // Vérification pour une carte Visa
                        int abcd = abcdef / 100;        // Numéro de carte de crédit séparé blocs
                        int efgh = abcdef % 100 * 100 + gh;

                        if (abcd / 1000 == 4)
                        {
                            WriteLine("Le numéro " + abcd + " " + efgh + " " + ijkl + " " + mnop +
                                " indique une carte Visa à valider en ligne.");
                        }
                        // Vérification pour une carte MasterCard
                        else if (abcd / 100 >= 51 && abcd / 100 <= 55)
                        {
                            WriteLine("Le numéro " + abcd + " " + efgh + " " + ijkl + " " + mnop +
                                " indique une carte MasterCard à valider en ligne.");
                        }
                        // Vérification pour une carte Sears
                        else if (abcd / 10 == 628 && abcd % 10 != 0 && efgh / 1000 != 0 && efgh / 100 % 10 != 0)
                        {
                            // Formule de Luhn
                            int i = ijkl / 1000;        // Numéro de carte de crédit séparé en chiffre
                            int j = ijkl / 100 % 10;
                            int k = ijkl / 10 % 10;
                            int l = ijkl % 10;

                            int m = mnop / 1000;
                            int n = mnop / 100 % 10;
                            int o = mnop / 10 % 10;
                            int p = mnop % 10;

                            i *= 2;
                            k *= 2;
                            m *= 2;
                            p *= 2;

                            if (i >= 10)
                            {
                                i -= 9;
                            }
                            if (k >= 10)
                            {
                                k -= 9;
                            }
                            if (m >= 10)
                            {
                                m -= 9;
                            }
                            if (p >= 10)
                            {
                                p -= 9;
                            }

                            if (i + j + k + l + m + n + o + p % 10 == 0)
                            {
                                WriteLine("Le numéro " + abcd + " " + efgh + " " + ijkl + " " + mnop +
                                    " indique une carte Sears valide.");
                            }
                            else
                            {
                                WriteLine("Le numéro " + abcd + " " + efgh + " " + ijkl + " " + mnop +
                                    " indique une carte Sears invalide.");
                            }
                        }
                        // Vérification pour une carte Zellers
                        else if (abcd / 10 == 700)
                        {
                            // Formule de Luhn
                            int i = ijkl / 1000;        // Numéro de carte de crédit séparé en chiffre
                            int j = ijkl / 100 % 10;
                            int k = ijkl / 10 % 10;
                            int l = ijkl % 10;

                            int m = mnop / 1000;
                            int n = mnop / 100 % 10;
                            int o = mnop / 10 % 10;
                            int p = mnop % 10;

                            i *= 2;
                            k *= 2;
                            m *= 2;
                            p *= 2;

                            if (i >= 10)
                            {
                                i -= 9;
                            }
                            if (k >= 10)
                            {
                                k -= 9;
                            }
                            if (m >= 10)
                            {
                                m -= 9;
                            }
                            if (p >= 10)
                            {
                                p -= 9;
                            }

                            if (i + j + k + l + m + n + o + p % 10 == 0)
                            {
                                WriteLine("Le numéro " + abcd + " " + efgh + " " + ijkl + " " + mnop +
                                    " indique une carte Zellers valide.");
                            }
                            else
                            {
                                WriteLine("Le numéro " + abcd + " " + efgh + " " + ijkl + " " + mnop +
                                    " indique une carte Zellers invalide.");
                            }
                        }
                        else
                        {
                            WriteLine("Le numéro " + abcd + " " + efgh + " " + ijkl + " " + mnop +
                                " indique une carte inconne.");
                        }
                    }
                }
            }
        }
    }
} 

【问题讨论】:

  • 您需要将您的abcdef 转换并存储为一个新变量:int input1 = ToInt32(abcdef)。然后稍后在您的代码中使用input1 而不是abcdef
  • 谢谢它的工作!
  • 你应该因为你的变量名而被否决
  • 另外,永远永远永远使用任何&lt;type&gt;.Parse方法解析用户输入,总是使用TryParse
  • 哈哈变量代表信用卡号!

标签: c# string int


【解决方案1】:
Int32.TryParse 

返回一个 bool 并填充变量,检查 bool 以查看它是否确实是一个 int。

https://docs.microsoft.com/en-us/dotnet/api/system.int32.tryparse?view=netframework-4.7.2

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多