我是c#的新手。
我有2个变量,我从用户名为“line”和“column”获得。我的目标是写“*”来屏蔽我从用户那里得到的很多行和列。例如,用户输入了5列和5行:
00000
00000
00000
00000
00000
但是当我运行我的程序时,它看起来像:
00000
00000
00000
00000
0000
(是的,错过了最后一个)。
我的代码是:
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i=1; i < sutun * satir; i++)
{
if (i%sutun==0)
{
Console.Write("\n");
}
else
{
Console.Write("*");
}
}
Console.ReadLine();
我该如何解决这个问题?谢谢你的建议。
答案 0 :(得分:2)
i
应小于或等于sutun
。
for (i=1; i <= sutun * satir; i++)
奖励注意:如何调试我的C#代码
在循环侧设置断点,然后按 F10 逐行。然后你就可以知道发生了什么。
答案 1 :(得分:1)
您的for
循环不仅应该如此(将<
更改为<=
):
for (i=1; i <= sutun * satir; i++)
无论如何都应该打印星号。从Console.Write("*")
块中取出if/else
并将其放在循环的顶部,只留下if
语句以打印newline
字符
using System;
public class Program
{
public static void Main()
{
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i = 1; i <= sutun * satir; i++)
{
Console.Write("*");
if (i % sutun == 0)
{
Console.Write("\n");
}
}
}
}
结果:
Kaç satır olsun?
3
Kaç sütun olsun peki?
5
*****
*****
*****
答案 2 :(得分:1)
实际上输出如下:
Kaç satır olsun?
5
Kaç sütun olsun peki?
5
****
****
****
****
****
即。而不是五列,你得到四列。对于前四行,这是因为你写的是换行符而不是第五行星号,而对于最后一行则是因为你写的是太少的星号。
你应该再写一个星号,你可以在循环中使用<=
运算符代替<
,而不应该写出换行符而不是星号的/ em>,但在:
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i = 1; i <= sutun * satir; i++) {
Console.Write("*");
if (i % sutun == 0) {
Console.Write("\n");
}
}
Console.ReadLine();