我最近开始学习C#编程,现在已经开始做一些练习了。其中一个练习如下:"如果我们列出所有低于 10 的自然数,它们是 3 或 5 的倍数,我们得到 3、5、6 和 9。求出所有倍数的总和。
我完全不明白为什么这行不通。调试时,此错误出现" 赋值的左侧必须是变量、属性或索引器 "对于 2 个布尔行和 if 语句行
{
static void Main(string[] args)
{
for(var x = 0; x < 10; x++) {
bool y = x%3=0;
bool z = x%5=0;
if (y = true || z = true) {
Console.WriteLine(x);
break;
}
}
}
}
在 C# 中,=
表示对变量或属性的赋值。==
意味着比较。
这:
bool y = x % 3 = 0;
bool z = x % 5 = 0;
表示"将 0 分配给x % 3
(和y
,尽管这在 C# 中被认为是糟糕的样式(",但x % 3
不是您可以分配的东西。你的意思是
bool y = x % 3 == 0;
bool z = x % 5 == 0;
现在,当我们在这里的时候,让我们让你养成一个良好的习惯,而你是一个新的 C# 程序员,这样你以后就不必被打破它们了。
很明显,你正在尝试嘶嘶声式的问题,这意味着你可能正在练习面试。 面试官会寻找小细节。
bool y = x % 3 == 0;
bool z = x % 5 == 0;
为什么x
、y
和z
? 这是什么意思? 无。 你可以选择宇宙中的任何文本,你选择选择毫无意义的文本。 面试官注意到了这一点。
bool divisbleByThree = current % 3 == 0;
bool divisibleByFive = current % 5 == 0;
继续前进:
if (y == true || z == true) {
没有什么比制作一个布尔值来比较布尔值和布尔值更能说明"我是一个新手程序员"了。y
和z
已经是真的或假的;将它们与true
进行比较是一种标识操作。这是完全没有必要的,因为"这是真的吗?"的答案与"这是真的吗?"的答案相同。 只是写
if (divisibleByThree || divisibleByFive)
{
另请注意,大多数 C# 程序员不使用"迪斯科风格"支撑。 烧掉多余的线,然后将支架放在一条线上。
您使用了不正确的运算符。
// = Operator means: x IS EQUAL to y.
// == Operator means: IS x EQUAL to y?
if(y == true || z == true)
{
Console.WriteLine(x);
break;
}
您也可以通过使用这个来简化你的 if 条件
//Your variables are of a bool datatype so they're only going to return True or False.
if( y || Z)
正如人们指出的那样,问题是这一行:
x % 3 = 0;
您尝试做一个比较方程,但而是将 0 分配给 3。 你需要做的
x % 3 == 0
我经常发现使用牙套很有帮助,即使它很简单。
我不确定您是否感到困惑,但您可以执行以下操作:
3 % x = 0
在上面的情况下,它实际上将 x 分配给零,将模块 3 分配给 x(已变为 0(