简单的控制台;保存,显示& delete 项目s and exit (Backpack)

NisseMax

新成员
已加入
2020年5月27日
留言内容
4
编程经验
Beginner
大家好你们好!我是编程新手,所以我的编码技能不是最好的。如果您的意见可以考虑到这一点,我将不胜感激。

我的问题是字符串称为"item" isn't getting recognized when I want to use it when the user wants to save an 项目. I've tried placing the string "item" in different codeblocks to see if that changes it but I get no success. 什么 is the problem here? By the way the string is at the current moment in line 33 and the option to save an 项目 is in line 89 with the 项目 = Console.ReadLine( ); in line 90. The option to show 项目 is in line 97 to 98.

出于结构目的,该代码分为几种方法。

仅供参考,程序尚未完全完成!


C#:
using System;

namespace BackPack
{
    班级计划
    {
        静态的 void Main(string[] args)
        {
            //Intro to the console
            Console.WriteLine("\n\tHi and welcome to Backpack!");
            Console.WriteLine("\t----------------------------------");
            Console.Write("Please hit enter to continue to the menu. . .");
            Console.ReadLine();

            //Tellin c# to head over the following method named "WhileSwitch()"
            WhileSwitch();
        } //End Main

        静态的 void WhileSwitch()
        {
            Console.Clear();

            //main; loops through menu and calls method based on choice
            //Declaring a stringvariable named optionChoice for the while loop condition.
            string optionChoice;

            //this is called the priming read
            //initializes the loop control variable (choice)
            //before loop condition

            //Tellin c# to head over the following method named "DisplayMenu()"
            DisplayMenu();
            string 项目 = "";
            optionChoice = Console.ReadLine();

            //While loop condition.
            while (optionChoice != "5")
            {
                switch (optionChoice)
                {
                    case "1":
                        OptionSaveItems();
                        break;

                    case "2":
                        OptionShowItems();
                        break;

                    case "3":
                        OptionBackpackCleanUp();
                        break;

                    case "4":
                        OptionExitBackpack();
                        break;

                    default:
                        {
                            Console.WriteLine("Please choose one of the for options presented in the menu!");
                            Console.Clear();
                            DisplayMenu();
                            break;
                        }//End default.

                }//End switch.
                //Out of the swith here, but still in the loop.
                //Re-display the menu because the user has done one of the 项目s.

                Console.Clear();
                DisplayMenu();
                optionChoice = Console.ReadLine();

            }//End while.
        }//End Statements

        静态的 void DisplayMenu()
        {
            Console.WriteLine("Down below you have four options to choose from.");
            Console.WriteLine("\n\t [1] - Save 项目s in the backpack.");
            Console.WriteLine("\n\t [2] - Show saved 项目s in the backpack.");
            Console.WriteLine("\n\t [3] - Clean up backpack.");
            Console.WriteLine("\n\t [4] - Quit backpack.");

        }//End DisplayMenu

        静态的 void OptionSaveItems()
        {
            //Giving the user the ability to save 项目s.
            Console.Write("You selected option 1.\n\nType in the desired 项目 you wish to save: ");
            //Reading the users input and assigning that value to the variale "item".
            项目 = Console.ReadLine();

        } //End OptionSaveItems

        静态的 void OptionShowItems()
        {
            Console.Write("You selected option 2.\n\nYou have saved following 项目/items: ");
            Console.WriteLine(item);

        } //End OptionShowItems

        静态的 void OptionBackpackCleanUp()
        {
            Console.Write("You selected option 3.\nThe backpack is getting cleaned of 项目s. . .");
            Console.WriteLine();
            Console.Write("\tEmpty!\n\nHit any key to return to the menu again. . .");
            Console.ReadKey();

        } //End OptionBackpackCleanUp

        静态的 void OptionExitBackpack()
        {
            Console.Write("The program is ending. . .");

        } //End OptionExitBackpack
    }
}
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
项目 变量在 WhileSwitch 方法,因此它仅存在于该方法中。就其他地方的代码而言,没有这样的变量。如果要能够在多个方法中引用变量,则必须在所有方法之外声明该变量。您所有的方法都是 静态的,这意味着他们只能引用其他 静态的 成员,所以您必须声明该变量 静态的 为了使这些方法能够使用它。
 

NisseMax

新成员
已加入
2020年5月27日
留言内容
4
编程经验
Beginner
嗨,jmcilhinney!感谢您的答复和提出建议。

Yes that is correct. I thought that the 项目 variable should be declared before the while loop so that's why I declared it in the codeblock for the WhileSwitch method. Okay so if I understand correctly. When you say 外 of the methods wouldn't that be in the codeblock right after "class Program"?抱歉,但我不确定我是否真的理解您的解释。我完全不喜欢编程。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
我不太确定这个词有什么令人困惑的地方"outside". If you know what it means for a variable declaration to be inside a method then you must know what it means for it to be 外.
 

NisseMax

新成员
已加入
2020年5月27日
留言内容
4
编程经验
Beginner
嗯,你可能是对的。理解内部和外部之间的差异并不难,但是当有多个代码块时,有时我很难理解内部和外部的内容。只是我自己并没有很长的编码经验,因此没有最好的信心。我只是想确定您的意思。

但是还是谢谢你。我会尽力解决的。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
只要确保您的代码正确缩进(看起来像是缩进的),并且确定哪个代码块中的内容应该很简单。您也可以始终折叠方法主体,因此您知道仍然可以看到的一切都在它们之外。
 

NisseMax

新成员
已加入
2020年5月27日
留言内容
4
编程经验
Beginner
我现在可以执行大多数操作,但是现在有一个小问题,那就是控制台似乎无法识别OptionExitBackpack方法中用于退出应用程序的选项4。有什么建议吗?

C#:
using System;

namespace BackPack
{
    班级计划
    {
        静态的 string 项目;
        
        静态的 void Main(string[] args)
        {
            //Intro to the console
            Console.WriteLine("\n\tHi and welcome to Backpack!");
            Console.WriteLine("\t----------------------------------");
            Console.Write("Please hit enter to continue to the menu. . .");
            Console.ReadLine();

            //Tellin c# to head over the following method named "WhileSwitch()"
            WhileSwitch();
        } //End Main

        静态的 void WhileSwitch()
        {
            Console.Clear();

            //main; loops through menu and calls method based on choice
            //Declaring a stringvariable named optionChoice for the while loop condition.
            string optionChoice;

            //this is called the priming read
            //initializes the loop control variable (choice)
            //before loop condition

            //Tellin c# to head over the following method named "DisplayMenu()"
            DisplayMenu();
            string 项目 = "";
            optionChoice = Console.ReadLine();

            //While loop condition.
            while (optionChoice != "5")
            {
                switch (optionChoice)
                {
                    case "1":
                        OptionSaveItems();
                        break;

                    case "2":
                        OptionShowItems();
                        break;

                    case "3":
                        OptionBackpackCleanUp();
                        break;

                    case "4":
                        OptionExitBackpack();
                        break;

                    default:
                        {
                            Console.WriteLine("Please choose one of the for options presented in the menu!");
                            Console.Clear();
                            DisplayMenu();
                            break;
                        }//End default.
                }//End switch.
                
                //Out of the swith here, but still in the loop.
                //Re-display the menu because the user has done one of the 项目s.

                Console.Clear();
                DisplayMenu();
                optionChoice = Console.ReadLine();
            }//End while.
            
        }//End Statements

        静态的 void DisplayMenu()
        {
            Console.WriteLine("Down below you have four options to choose from.");
            Console.WriteLine("\n\t [1] - Save 项目s in the backpack.");
            Console.WriteLine("\n\t [2] - Show saved 项目s in the backpack.");
            Console.WriteLine("\n\t [3] - Clean up backpack.");
            Console.WriteLine("\n\t [4] - Quit backpack.");
        }//End DisplayMenu

        静态的 void OptionSaveItems()
        {
            //Giving the user the ability to save 项目s.
            Console.WriteLine("You selected option 1.")
            Console.WriteLine("\nType in the desired 项目 you wish to save: ");
            //Reading the users input and assigning that value to the variale "item".
            项目 = Console.ReadLine();
        } //End OptionSaveItems

        静态的 void OptionShowItems()
        {
            Console.Clear();
            Console.Write("You selected option 2.")
            Console.WriteLine("\nYou have saved following 项目/items: ");
            Console.WriteLine(item);
            
            //If user don't have any saved 项目s then this text will occur.
            if (item == " ")
            {
                Console.Clear();
                Console.WriteLine("You don't have any saved 项目s at the moment!");
            }
        } //End OptionShowItems

        静态的 void OptionBackpackCleanUp()
        {
            Console.Clear();
            项目 = " ";
            Console.Write("You selected option 3.\nThe backpack is getting cleaned of 项目s. . .");
            Console.WriteLine();
            Console.Write("\tEmpty!\n\nHit any key to return to the menu again. . .");
            Console.ReadKey();
        } //End OptionBackpackCleanUp
        
        //THIS IS WHERE THE PROBLEM IS!
        静态的 void OptionExitBackpack()
        {
            Console.Write("The program is ending. . .");

        } //End OptionExitBackpack
    }
}
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
问题是什么?您遇到错误了吗?如果没有错误,您会看到什么行为?您期望看到什么行为?
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
您是否真的调试过代码,即设置一个断点并逐行浏览代码,检查每一步的状态?我希望不会,因为据我所知,这个问题应该很明显。如果用户输入"4" then that OptionExitBackpack will be called and the message that the program is ending will be displayed. Then what? 什么 have you actually done to make the program exit?
 

克里斯·鲁

新成员
已加入
2020年11月17日
留言内容
1
编程经验
Beginner
嘿NisseMax,试试这个。

C#:
静态的 void OptionExitBackpack()
        {
            Console.Write("The program is ending. . .");
            Environment.Exit(0);
        } //End OptionExitBackpack

克里斯
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
当然可以,但是您正在奠定意大利面条的基础。
 
最佳 底部