如何修复循环结果

时间:2019-04-30 04:59:02

标签: c#

我正在输入数字,例如1或高数字,并想要这样的结果:"1,2 hop!", "1,2,3 hop!"

这是针对Visual Studio中的C#,我试图将数组放入变量中,但无法获得预期的结果。

class Program
{
    static void Main(string[] args)
    {
        int angka;
        Console.WriteLine("Masukkan Angka : ");
        angka = Console.Read();
        for( int i = 0; i<angka;i++)
        {
            Console.WriteLine(angka.ToString()+ " + Hop !");
            int y = 0;
            if ((int)y == angka)
            {
                break;
            }
        }
    }
}

我希望2的输出是1,2 hop!,但实际输出是这样的:

Masukkan Angka :
3

51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !
51 Hop !

6 个答案:

答案 0 :(得分:1)

一个可能的问题解决方案是...

            int angka;
            Console.WriteLine("Masukkan Angka : ");
            angka =Convert.ToInt32(Console.ReadLine());
            string result =$"{string.Join(",",Enumerable.Range(1,angka).ToList())} hop!";

您使用过Console.Read(),它为您提供enter的ascii值(如DarkSquirrel42所评论)。除此之外,您对所需的输出和所应用的逻辑还不太清楚。

喜欢...

Console.WriteLine(angka.ToString()+ " + Hop !");  //you always print angka which is not changed and remain same for all output..thus it's print always 51(enter's ascii)

还有

 int y = 0; //Generally we don't declare variables within a single loop beacuse on each iteration it will be reinitialize.

if ((int)y == angka)  //this will break it in first iteration...explicit conversion is not requied
{
  break;
}

答案 1 :(得分:1)

尝试下面的代码

int angka;
Console.WriteLine("Masukkan Angka :");
angka = Convert.ToInt32(Console.ReadLine());
for (int i = 1; i <= angka; i++)
{
    Console.Write(i.ToString() + (i == angka ? " hop!" :  ","));
}
Console.ReadKey();

答案 2 :(得分:0)

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Masukkan Angka : ");
        int angka = Convert.ToInt32(Console.ReadLine());

        for (int i = 1; i <= angka; i++)
        {
            Console.Write(i + ", ");
        }

        Console.Write(" hop! ");

        Console.ReadKey();

    }
}

Result

答案 3 :(得分:0)

您在这里遇到了几个问题...

  1. 在循环中,您声明int y,然后将其强制转换为int(int)y,这完全没有必要。此外,您将0分配给y并再次检查t angka,除非您将0分配给angka,否则它将始终为false,但在这种情况下,将不会执行循环(由于条件i < angka)。因此这段代码可以完全删除。

  2. 您想要的结果表明您希望编写用逗号分隔的连续数字,因此您需要在循环内使用Console.Write(i + ","),因为angka在循环内是常量,然后写入此变量控制台将每次打印相同的数字。循环后,您应该呼叫Console.Write(" hop!");

答案 4 :(得分:0)

怎么样?

class Program
{
    static void Main(string[] args)
    {
        int angka = 0;
        Console.WriteLine("Masukkan Angka : ");
        while (angka < 1 || angka > 9)
        {
            int.TryParse(Console.ReadLine(), out angka);
            if (angka < 1 || angka > 9)
            { Console.WriteLine("Please enter a number between 1 and 9"); }
        }
        System.Text.StringBuilder resultString = new System.Text.StringBuilder();
        for (int i = 1; i <= angka; i++)
        {
            resultString.Append(i.ToString());
            resultString.Append(i < angka ? "," : " hop!");
        }
        Console.WriteLine(resultString.ToString());
    }
}

答案 5 :(得分:0)

尝试一下

int angka;
        Console.WriteLine("Masukkan Angka : ");
        angka = Convert.ToInt32(Console.ReadLine());
        for (int i = 1; i < angka; i++)
        {
            if(i==1)
            {
                Console.Write(i);
            }
            else
                Console.Write(","+i);
        }
        Console.WriteLine(" hop!");
        Console.ReadKey();