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



运行程序后,我只能插入第一个学生的数据,之后它只显示我应该插入的内容,但没有赋予我这样做的权利。 没有编译错误。 虽然我认为问题出在我分配变量时,但这可能是一个问题,因为我不知道我是否应该用 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

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

进行这些更改后...

  1. static 修饰符添加到字段中,以便您可以从static方法访问它们。
  2. studentNumberage字段的类型从string更改为int,因为您要将它们解析为 int
  3. enterData()displayData()Main()方法中删除局部studentNumberstudentNameagephoneNumber变量。

。这会导致此代码...

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();
    }
}

。这对我来说按预期工作。

相关内容

  • 没有找到相关文章

最新更新