【发布时间】:2014-11-26 17:36:17
【问题描述】:
我在 c# 上做了一个回文程序。为了消除区分大小写,我必须将输入完全转换为小写(或大写)。现在,当我打印反向数组时,我希望区分大小写。比如如果 input = Madam,我希望 Reverse 是 = madaM。现在我知道我可以从输入中创建一个新的 char 数组,而且我已经做到了。但我想以某种方式操纵 LowerInvariant 数组。我知道我的代码的 Upper 方法不起作用,因为数组被转换为小写。
using System;
using System.Linq;
public class Palindrome
{
public static void Main(string [] args)
{
string input = Console.ReadLine();
string lower = input.ToLowerInvariant();
char[] array = lower.ToCharArray();
Array.Reverse(array);
Upper(array, input);
Console.WriteLine("\nPalindrome: {0}", array.SequenceEqual(lower));
Console.ReadKey();
}
public static void Upper(char[] array, string input)
{
for (int i = 0; i < array.Length; i++)
{
if (Input's [i] char is Upper) => Not sure how to put this as a code.
array[i] = Char.ToUpper(array[i]);
}
Console.WriteLine("Reverse array :");
for (int i = 0; i < array.Length; i++)
Console.Write("{0}", array[i]);
}
}
【问题讨论】:
-
您的
Upper方法看起来不像您想要的那样 - 您在说“如果字符已经是大写,则将其设为大写” - 这肯定不是您想要的。 -
为什么不反转输入字符串?
-
@JonSkeet 抱歉,我忘了编辑它。在 if 语句中,我希望编译器查看循环中的该字符是否在输入中较高。当然这不是我在代码中所做的,但我不知道该怎么做。
-
为什么不直接使用
Console.WriteLine(String.Reverse())?太简单了? -
@LeffeBrune 我不知道这会有什么帮助,你能解释一下吗?
标签: c# arrays palindrome