运行代码 [closed] 时跳过 C# If-Statement。

C# If-Statement is skipped when runnig code [closed]

提问人:A .M 提问时间:9/12/2023 最后编辑:A .M 更新时间:9/12/2023 访问量:90

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。

2个月前关闭。

问题

您好,在我的代码中,当我运行代码时跳过了 if 语句,但是当我调试它时,它运行正常。此外,当我删除:

homepage.homepageErzeugen();

它运行正常

法典


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ATM
{
    
    class CashWithdrawel
    {
        //Felder
        Customer kunde = new Customer();
        Homepage homepage = new Homepage();
        

        //Public Methoden
        public double GeldAbbuchen()
        {
            Console.Write("Geben sie den gewünchten Betrag ein: ");
            double abbuchungsWert = Convert.ToDouble(Console.ReadLine());
            

            if (kunde.Kontostand <= 0)
            {
                Console.WriteLine("Sie haben nicht genügend Geld!");
                Console.WriteLine("Wählen sie einen anderen Betrag aus");
            }
            else
            {
                kunde.Kontostand -= abbuchungsWert;
                Console.WriteLine("Sie haben {0} Euro erfolgreich abgebucht", abbuchungsWert);
                Console.WriteLine("Der neue Kontostand beträgt: {0} Euro", kunde.Kontostand);

            }

            homepage.homepageErzeugen();
            return abbuchungsWert;

        }
    }
}

Customer 类的代码

//Felder
public string Vorname { get; set; }
public string Nachname { get; set; }
public int Kundennummer { get; set; }
public string Passwort { get; set; }
public double Kontostand { get; set; }

public string[] lines = File.ReadAllLines(@"C:\dev\MunirAbdullah\C#\ATM\Benutzerkonten.txt");

int varForConstrucor;

string[] lines2;

//Konstruktor
public Customer()
{
        lines2 = lines[varForConstrucor].Split();
        Vorname = lines2[0];
        Nachname = lines2[1];
}
//Public Methoden

public bool checkIfBenutzerExestiert(string benutzer)
{
    bool beneutzerExestiert = false;
    for (int i = 0; i < lines.Length; i++)
    {
        if (lines[i] == benutzer)
        {
            varForConstrucor = i;
            //Passwort abfrage initialisieren
            Console.Clear();
            Menu menu = new Menu();
            menu.createMenu();
            beneutzerExestiert = true;
        }
    }
    return beneutzerExestiert;
}

public double checkTotalAmountOfMoney()
{
    return Kontostand;
}

}

Homepage 类的代码

class Homepage
{
public void homepageErzeugen()
{
    Console.Clear();
    Console.Title = "Remmert Finance Application";

    Console.ForegroundColor = ConsoleColor.Magenta;
    string welcomeText = "Willkomen bei RemmertFinance";
    Console.SetCursorPosition((Console.WindowWidth - 
    welcomeText.Length) / 2, Console.CursorTop);
    Console.WriteLine(welcomeText + "\n");
    Console.ForegroundColor = ConsoleColor.White;

    Console.Write("Bitte geben sie ihr Benutzername ein: ");

    Customer kunde = new Customer();
    kunde.checkIfBenutzerExestiert(Console.ReadLine());

    string curBenutzerName = Console.ReadLine();
}

}

我做了什么

我已经在寻找解决方案,唯一发现的是条件可能是错误的

C# IF语句

评论

2赞 borealis-c 9/12/2023
请添加“客户”和“主页”类的代码。从片段中尚不清楚会发生什么。谢谢!
1赞 Some programmer dude 9/12/2023
现在似乎是学习如何调试程序的好时机。例如,通过使用调试器逐行执行代码,同时监视变量及其值。
2赞 Orion 9/12/2023
当您说“跳过 if 语句”时,您的意思是您只看到从分支打印到控制台的语句,还是什么都看不到?else
1赞 Fildor 9/12/2023
哦,不相关:不要用德语编码。我知道这很诱人,但要练习用英语编码。它是编码人员事实上的通用语言,使在国际环境中共享它变得更加方便。
2赞 Some programmer dude 9/12/2023
问题可能不在于您显示的代码。该功能是否“清除”屏幕?然后,该函数完成的输出将立即被清除,您不会注意到它。homepageErzeugenGeldAbbuchen

答:

1赞 A .M 9/12/2023 #1

问题在于,类 Homepage 以:Console.Clear(); 所以控制台刷新到很快,所以我看不到 If 语句的输出

溶液:

        Console.WriteLine("Press any button");
        Console.ReadKey();

        homepage.homepageErzeugen();
        return abbuchungsWert;