【问题标题】:question about Arrays关于数组的问题
【发布时间】:2009-04-06 20:00:02
【问题描述】:

我对此代码有疑问。我是初学者,喜欢学习 C#。但后来我谈到了现在称为 Array 的主题,这非常困难,我需要你的帮助。我想了解代码。 这里我不明白的是这里的第1、2、3、4和5部分是什么意思?
我不明白这里的“const”和“byte”的作用是什么? 我会很感激你的解释? 谢谢和问候;-)

1)

const byte numbers = 5;
byte[] myNumbers = new byte[numbers];
byte additionalNumbers;
Random coincidenceNumbers = new Random();

2)

string yourPassword;
Console.WriteLine("Please enter your password:");
yourPassword = Console.ReadLine();

if (yourPassword != "helloWorld")
{ 
    Console.WriteLine("\nWrong password\n");
    return;
}
else 
{
    Console.WriteLine();
    Console.WriteLine("Welcome to my world!");

    for (int i=0; i < myNumbers.Length; ++i)
    { 
        myNumbers[i]=(byte)(coincidenceNumbers.Next(1,50));
    }
}

3)

additionalNumbers=(byte) (coincidenceNumbers.Next(1,50));

4)

Array.Sort(myNumbers);
Console.WriteLine("\nThe Number is:\n");

5)

foreach (byte elem in myNumbers)
{
    Console.WriteLine("\t" + elem);
    Console.WriteLine();
    Console.WriteLine("Additional Number is: " + additionalNumbers);
}

【问题讨论】:

  • 该代码甚至无法编译。删除声明前的 #* 位。
  • 啊,好的,格式已修复。
  • 我强烈建议你阅读一些关于 C# 的介绍性教程(或书籍):)
  • 不,现在 格式已修复 :(
  • 听起来你需要上真正的课;无论是大学还是职业的基本编程。这个问题听起来比不理解数组要严重得多。

标签: c# random numbers


【解决方案1】:

const是一个保留词,意思是“变量”不会改变,相反,如果你试图改变它的值不会改变

const byte numbers = 5;
numbers = 6; // will fail

byte是一种存储小数的类型

那么,

byte[] myNumbers = new byte[numbers];

创建一个数字数组 (5) 个位置。例如,您可以将值分配给数组中的任何位置,如下所示:

myNumbers[0] = 4;  // position 1
myNumbers[1] = 45;  // position 2
myNumbers[2] = 25;  // position 3
myNumbers[3] = 0;  // position 4
myNumbers[4] = 12;  // position 5
myNumbers[5] = 3;  // will fail, array just have 5 positions

[编辑]

additionalNumbers=(byte) (coincidenceNumbers.Next(1,50));

这里,cognitiveNumbers 是一个 Random 对象,所以它会生成随机数。它的“Next”函数将生成一个整数。它接收 2 个参数:最小值和最大值。所以,这里会生成一个介于 1 到 50 之间的随机数。

整数与字节相比很大,所以有一个“强制转换”...整数将转换为字节。 如果整数小于255,没问题,否则会丢失精度

如果你尝试这样做

int x = 500;
byte y = (byte) x;
Console.WriteLine(y); // 244, precision lost

【讨论】:

  • 你好 Jhonny,感谢您的解释。这是非常有用的,但这个,我不明白:additionalNumbers=(byte) (coincidenceNumbers.Next(1,50)); Array.Sort(myNumbers);
【解决方案2】:

您需要阅读一些有关数组的基础教育材料,例如尝试MSDN Arrays Tutorial

【讨论】:

    【解决方案3】:

    byte 是一个整数类型,存储值 0..255

    const 表示变量“numbers”的值永远不会改变(所以它是常数)。

    【讨论】:

    • 一个字节是一个UNSIGNED 8位整数类型,可以存储0到255(0xff)
    【解决方案4】:
    1. 创建一个包含一个字节的常量变量,值为 5。
    2. 为文本字符串留出位置并调用变量 yourPassword。
    3. 循环遍历 myNumbers 中的每个字节。
    4. 对我的号码进行排序。
    5. 再次循环遍历 myNumbers 中的每个字节(这次已排序),将每个字节称为“elem”。

    您真的应该阅读一些关于编程的初学者教程(一般而言)。这与实际的 Array 类关系不大。

    编辑:Aaaand 你改变了你的问题......

    【讨论】:

      【解决方案5】:

      我猜 1*、2*、3*、4* 和 5* 是在您正在查看的示例中向您指出某些东西的符号。

      const 是一个修饰符,将变量标记为常量(即它永远不会改变)

      byte 是一种数据类型,将存储 1 个字节(8 位)的数据。

      编辑好吧,现在我觉得自己很愚蠢...当我最初阅读问题时,问题的格式并不完全相同。请随意忽略我的回答...

      【讨论】:

      • 很抱歉,也许我对这里的设计不清楚。我的意思是:const byte numbers = 5;字节[] myNumbers = 新字节[数字];字节附加数字;随机巧合数 = new Random();我想了解代码是如何流动的。没问题;-)
      【解决方案6】:

      来自MSDN

      常量:

      const 关键字用于修改字段或局部变量的声明。指定字段或局部变量的值为常量,即不能修改。

      例如:

      const byte numbers = 5;
      

      您正在声明一个 'byte' 类型的 constant 变量,名为 numbers,值为 5。

      稍后,您将无法更改变量编号,例如:

      numbers = 6; // this is not allowed because it was declared as const
      

      我希望这可以澄清您问题的第一部分。

      我建议转到MSDN 并查找问题其他部分的术语。尝试养成使用此资源以供将来参考的习惯。

      【讨论】:

        猜你喜欢
        • 2013-10-05
        • 2011-03-04
        • 1970-01-01
        • 1970-01-01
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多