用逗号打印偶数C#中的最后一个除外不起作用

如何解决用逗号打印偶数C#中的最后一个除外不起作用

我几天来一直在尝试解决此问题,但找不到错误。它看起来像一个if语句一样简单,以使代码显示除最后一个数字以外的所有逗号。它适合我放置随机数,但是当我放置特定数字(24,7,35,2,27,89)时,它会在最后打印逗号。

Print even numbers with commas

这是我的代码,但是我尝试了多种其他方式。

using System.Collections.Generic;
using System.Text;
using System.Transactions;

namespace ArrayExercises
{
    class TaskFour
    {
        public static void FindEvennumbers()
        {
            int[] input = new int[7];
            int count = 1;
            string comma = ",";
            Console.WriteLine("[== Please Enter 7 numbers ==]");
            Console.WriteLine();

            for (int i = 0; i < input.Length; i++)
            {
              Console.WriteLine($"Enter number {count}:");
              input[i] = int.Parse(Console.ReadLine());              
              count++;
            }
            Console.WriteLine("The even numbers in this array are: ");
            for (int i = 0; i < input.Length; i++)
            {
              
                if (input[i] % 2 == 0) 
                {
                    if (i < input.Length)
                    {
                        Console.Write(input[i] + comma);
                    }
                    else
                    {
                        Console.Write(input[i]);
                    }
                }
            }
        }
    }
}

预先感谢:)

解决方法

此答案假设以上内容是家庭作业/教程,还有更有效的方式表示我在此处发布的内容

问题在于此段:

                if (i < input.Length)
                {
                    Console.Write(input[i] + comma);
                }

问题 是,无论后面要做什么,您总是输出逗号。我认为最简单的方法是在逗号前添加逗号,这意味着,当您经历第二个循环时,如果您之前已经打印过一个数字,则可以在逗号前添加一个逗号并打印您拥有的数字(如果您已经之前没有打印任何数字(也就是说,您将要打印第一个数字),那么就不必在逗号前加上

。 ,

您可以使用下面的代码,而不会使用for循环引入任何多余的空间。

for (int i = 0; i < input.Length; i++)
{
    if (input[i] % 2 == 0)
    {
        if (i != 0) Console.Write(comma);
        Console.Write(input[i]);
        
    }
}

或使用内置的string.Join函数。

Console.WriteLine(string.Join(',',input.Where(i => i % 2 == 0)));
,

您的其他条件将永远不会执行。如果您是C#的新秀,那么我建议您先获取所有偶数并将其存储在列表中。再次进行迭代以使用逗号进行打印,而只需跳过最后一个逗号即可。

//Your existing source code
List<int> evenNumber = new List<int>();
for (int i = 0; i < input.Length; i++)
{
   if (input[i] % 2 == 0) 
   {
       evenNumber.Add(input[i]);
   }
}
for(int i = 0; i < evenNumber.Length; i++)
{
   //Print just number if it is last,otherwise print number with comma
   if(i == evenNumber.Length - 1)
        Console.Write(evenNumber[i]);
   else
        Console.Write(evenNumber[i]+comma);
}

如果您知道string.Join(),请使用linq获取偶数列表,并使用','作为分隔符打印偶数列表

var evenNumbers = input.Where(x => x % 2 ==0);  //Filter all even numbers
Console.WriteLine(string.Join(",",evenNumbers);  //Print using string.Join
,

i总是小于循环条件的输入长度。

您可以让string.join替您完成繁重的工作,而不是自己执行此操作:

string result = string.Join(comma,input.Where(i => i % 2 == 0));
Console.WriteLine(result);
,

又一个版本:

string result = "";
for (int i = 0; i < input.Length; i++)
{
    if (input[i] % 2 == 0) 
    {
        result += $",{input[i]}";
    }
}
Console.WriteLine( result.Length > 0 ? result.Substring(1).ToString() : "");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?