Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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# 由于int数据类型的初始化,在运行时显示内存问题_C#_Scope_Console.writeline_Variable Initialization_Unassigned Variable - Fatal编程技术网

C# 由于int数据类型的初始化,在运行时显示内存问题

C# 由于int数据类型的初始化,在运行时显示内存问题,c#,scope,console.writeline,variable-initialization,unassigned-variable,C#,Scope,Console.writeline,Variable Initialization,Unassigned Variable,在运行程序后,我只能插入第一个学生的数据,然后它只显示我应该插入的内容,但没有给我这样做的权利。没有编译错误。虽然我认为问题是当我分配变量时,这可能是一个问题,因为我不知道我是否应该用0初始化int。如果我不初始化变量,我会得到很多编译错误。另外,在我的例子中,为什么它会显示带有随机数字“48”的学生电话号码 using System; using System.Collections; using System.Collections.Generic; using System.Linq; u

在运行程序后,我只能插入第一个学生的数据,然后它只显示我应该插入的内容,但没有给我这样做的权利。没有编译错误。虽然我认为问题是当我分配变量时,这可能是一个问题,因为我不知道我是否应该用0初始化int。如果我不初始化变量,我会得到很多编译错误。另外,在我的例子中,为什么它会显示带有随机数字“48”的学生电话号码

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

namespace CustomCollections
{
    internal class Program
    {
        string studentNumber;
        string studentName;
        string age;
        int phoneNumber;

        public static void enterData()
        {
            int studentNumber, age, phoneNumber;
            string studentName;

            Console.WriteLine("Enter Student Number:");
            studentNumber = int.Parse(Console.ReadLine());

            Console.WriteLine("Enter Name:");
            studentName = Console.ReadLine();

            Console.WriteLine("Enter Age:");
            age = int.Parse(Console.ReadLine());

            Console.WriteLine("Enter phone number:");
            phoneNumber = int.Parse(Console.ReadLine());
        }

        public static void displayData()
        {
            string studentNumber=null;
            string studentName=null;
            string age=null;
            int phoneNumber=0;

            Console.WriteLine("Student Number:{0}",studentNumber);
            Console.WriteLine("Student Name:{0}",studentName);
            Console.WriteLine("Student Age:{0}", age);
            Console.WriteLine("Student phone number:{0}",phoneNumber);
            Console.ReadKey();


        }

        public static void Main(String[] args)
        {
            string studentNumber;
            string studentName;
            string age;
            int phoneNumber;
            enterData();
            displayData();
        }

    }
}
我还将在此处显示结果:

Enter Student Number:
2
Enter Name:
seli
Enter Age:
22
Enter phone number:
2207885
Student Number:
Student Name:
Student Age:
Student phone number:48

在四个不同的位置定义了名为
studentNumber
studentName
age
phoneNumber
的变量。在不同方法中具有相同名称的局部变量并不表示相同的存储。为了让
enterData()
读取的值能够被
displayData()
访问,您需要将它们作为参数传递,或者将它们存储在类级别而不是本地变量中;后者需要对代码进行最少的更改

在做了这些改变之后

  • static
    修饰符添加到字段中,以便可以从
    static
    方法访问它们
  • studentNumber
    age
    字段的类型从
    string
    更改为
    int
    ,因为您正在将它们解析为
    int
  • enterData()
    displayData()
    Main()
    方法中删除本地
    studentNumber
    studentName
    age
    phoneNumber
    变量
  • …这将导致此代码

    internal class Program
    {
        static int studentNumber;
        static string studentName;
        static int age;
        static int phoneNumber;
    
        public static void enterData()
        {
            Console.WriteLine("Enter Student Number:");
            studentNumber = int.Parse(Console.ReadLine());
    
            Console.WriteLine("Enter Name:");
            studentName = Console.ReadLine();
    
            Console.WriteLine("Enter Age:");
            age = int.Parse(Console.ReadLine());
    
            Console.WriteLine("Enter phone number:");
            phoneNumber = int.Parse(Console.ReadLine());
        }
    
        public static void displayData()
        {
            Console.WriteLine("Student Number:{0}", studentNumber);
            Console.WriteLine("Student Name:{0}", studentName);
            Console.WriteLine("Student Age:{0}", age);
            Console.WriteLine("Student phone number:{0}", phoneNumber);
            Console.ReadKey();
        }
    
        public static void Main(String[] args)
        {
            enterData();
            displayData();
        }
    }
    

    …这对我来说很有效。

    您在四个不同的位置定义了名为
    studentNumber
    studentName
    age
    phoneNumber
    的变量。在不同方法中具有相同名称的局部变量并不表示相同的存储。为了让
    enterData()
    读取的值能够被
    displayData()
    访问,您需要将它们作为参数传递,或者将它们存储在类级别而不是本地变量中;后者需要对代码进行最少的更改

    在做了这些改变之后

  • static
    修饰符添加到字段中,以便可以从
    static
    方法访问它们
  • studentNumber
    age
    字段的类型从
    string
    更改为
    int
    ,因为您正在将它们解析为
    int
  • enterData()
    displayData()
    Main()
    方法中删除本地
    studentNumber
    studentName
    age
    phoneNumber
    变量
  • …这将导致此代码

    internal class Program
    {
        static int studentNumber;
        static string studentName;
        static int age;
        static int phoneNumber;
    
        public static void enterData()
        {
            Console.WriteLine("Enter Student Number:");
            studentNumber = int.Parse(Console.ReadLine());
    
            Console.WriteLine("Enter Name:");
            studentName = Console.ReadLine();
    
            Console.WriteLine("Enter Age:");
            age = int.Parse(Console.ReadLine());
    
            Console.WriteLine("Enter phone number:");
            phoneNumber = int.Parse(Console.ReadLine());
        }
    
        public static void displayData()
        {
            Console.WriteLine("Student Number:{0}", studentNumber);
            Console.WriteLine("Student Name:{0}", studentName);
            Console.WriteLine("Student Age:{0}", age);
            Console.WriteLine("Student phone number:{0}", phoneNumber);
            Console.ReadKey();
        }
    
        public static void Main(String[] args)
        {
            enterData();
            displayData();
        }
    }
    

    …这对我来说就像预期的一样。

    您已经在四个不同的地方定义了同名的同一组变量。我对其中的两对进行了注释,并让这对变量初始化,我得到了相同的错误。即使如此,我也不认为我应该通过多次定义变量来获得运行时错误。您已经在四个不同的地方定义了同名的同一组变量。我对其中的两对进行了注释,并让这对变量初始化,我获得了相同的错误。即便如此,我不认为我应该通过多次定义变量来获得运行时错误。我完全按照你说的做了,我得到了相同的错误:输入学号:2输入姓名:seli输入年龄:22输入电话号码:072222316学号:0学名:学龄:0学生电话号码:0在我按run键后,我完成了第一个学生,但我不能添加第二个学生。它只允许我填写一名学生的数据,然后显示学生编号:0,后面是学生姓名:后面是学生年龄:0,后面是学生电话号码:0。在这之后,我需要按任意键就完成了。如果没有某种循环,你的代码只会提示输入一个学生,然后退出。它似乎正在打印这些变量的默认值。它们只被定义为字段,而不是这三种方法中的任何一种,对吗?是的,我按你说的做了,从所有这些方法中删除它们,并在内部类程序中的任何方法之前使用static编写它们。我已使用适用于我的完整代码更新了我的答案。我完全按照你说的做了,我得到了相同的错误:输入学号:2输入姓名:seli输入年龄:22输入电话号码:072222316学号:0学生姓名:学生年龄:0学生电话号码:0在我按run后,我完成了第一个学生的数据,但我无法添加第二个学生。它只允许我填写一名学生的数据,然后显示学生编号:0,后面是学生姓名:后面是学生年龄:0,后面是学生电话号码:0。在这之后,我需要按任意键就完成了。如果没有某种循环,你的代码只会提示输入一个学生,然后退出。它似乎正在打印这些变量的默认值。它们只定义为字段,不在这三个方法中的任何一个中,对吗?是的,我按照你的要求做了,从所有这些方法中删除了它们,并在内部类程序中的任何方法之前用static编写它们。我已经用适用于我的完整代码更新了我的答案。