for(int i = 0; i < org.Length; i++)
{
if (i < org.Length)
{
orgResult += $“{org[i]},“;
doubledResult += $“{doubled[i]},“;
}
else
{
orgResult += $“{org[i]}“;
doubledResult += $“{doubled[i]}“;
}
}
Console.WriteLine($“\r\nYour original array was [{orgResult}] and now it is doubled it is [{doubledResult}]“);
在提供的代码中,当我显示到控制台窗口时,我试图在数组中的每个元素之后放置一个逗号。但是,当我到达数组中的最后一个数字时,我不想在其后加逗号。
我以为else语句可以解决这个问题,但是在最后一个数字后面仍然加上逗号。有什么建议吗?
答案 0 :(得分:3)
i
始终小于org.Length
,这就是循环条件。要识别何时是最后一次迭代,您需要检查if i < org.Length - 1
:
for(int i = 0; i < org.Length; i++)
{
if (i < org.Length - 1)
解决此问题的更好方法是使用string.Join()
:
orgResult = string.Join(",", org);
doubledResult = string.Join(",", doubled);
但是,如果这是学校活动,则可能不允许您使用这些方法。
答案 1 :(得分:2)
您想要的是这样的
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_home"
android:icon="@drawable/ic_feed"
android:title=""/>
<item
android:id="@+id/navigation_dashboard"
android:icon="@drawable/ic_analytics"
android:title="" />
<item
android:id="@+id/navigation_profile"
android:icon="@drawable/ic_profile"
android:title="" />
<item
android:id="@+id/navigation_settings"
android:icon="@drawable/ic_settings"
android:title="" />
</menu>
结果:CombinedString =“ a,b,c”
答案 2 :(得分:1)
As I mentioned in my comment来修复您需要更改的代码:
if (i < org.Length)
进入:
if (i < org.Length - 1)
这是因为您的循环已经强制i
小于org.Length
的要求,因此您的else
情况永远不会触发。
但是,要获得更有效的解决方案,您应该使用René's answer中提到的string.Join
。
答案 3 :(得分:1)
如果string
大,则当前代码中的org
存在问题:
int[] org = new int[1000000];
因为每个orgResult += $“{org[i]},“;
都意味着创建不可变 string
的新实例并将复制到其中({ {1}}的创建数乘以1000000
的平均长度得出500000
个基本运算)。
如果要循环实现,请使用5e11
:
StringBuilder
答案 4 :(得分:-1)
有很多方法可以做到这一点, 例如,您可以像这样更改条件:
orgResult += $“{org[i]}“;
doubledResult += $“{doubled[i]}“;
if(i != org.Length - 1)
{
orgResult += ",";
doubledResult += ",";
}
虽然这不是最佳实践。