#c# #arrays #arraylist
Вопрос:
Это остальная часть вопроса. Возвращает массив, состоящий из строкового представления чисел от 1 до n.Но есть один нюанс!! Для кратных 3 возвращайте строку «Darude» вместо числа, для кратных 5 возвращайте строку «Песчаная буря»; а для кратных 3 и 5 возвращайте строку «Darude StandStorm».
Это мой код
static string [] stringarray(int n)
{
string [] results= { } ;
for (int i = 1; i <= n; i )
{
if (i % 3 == 0) results = new[] { "Deude" };`enter code here`
if (i % 5 == 0) results = new[] { "Sandstome" };
if (i % 3 == 0 amp; i % 5 == 0) results = new[] { "Darude Sandstome" };
else Console.WriteLine(i);
}
return results;
}
Комментарии:
1. В чем проблема?
2. Это не дает тех результатов, которых я хочу.
3.
enter code here
что здесь делаешь?4. @Den давайте перефразируем вопрос в пользу,
5. Это звучит как версия fizzbuzz. Существует корпоративная версия C# , которая может помочь (или нет)
Ответ №1:
Я бы предложил немного лучший вариант :
public static string[] stringarray(int n)
{
bool isMultipleOf3 = i % 3 == 0;
bool isMultipleOf5 = i % 5 == 0;
string[] results = new string[n];
for ( int i = 1; i <= n; i )
{
if ( isMultipleOf3 amp;amp; isMultipleOf5 )
{
results[i - 1] = "Darude Sandstome";
continue;
}
if (isMultipleOf3 )
{
results[i - 1] = "Deude";
continue;
}
if ( isMultipleOf5 )
{
results[i - 1] = "Sandstome";
continue;
}
results[i - 1] = i.ToString(); //Console.WriteLine(i);
}
return results;
}
Это лучше, потому что вы вычисляете i%3 и i%5 только один раз. И, это более понятно, что вы тестируете, так как переменные bool имеют четкие имена.
Ответ №2:
Зацени это. Вы создаете экземпляр массива в цикле, чтобы он очистил значение.
public static string[] stringarray(int n)
{
string[] results = new string[n];
for (int i = 1; i <= n; i )
{
if (i % 3 == 0 amp;amp; i % 5 == 0)
{
results[i - 1] = "Darude Sandstome";
}
else if (i % 3 == 0)
{
results[i - 1] = "Deude";
}
else if (i % 5 == 0)
{
results[i - 1] = "Sandstome";
}
else
{
results[i - 1] = i.ToString();
}
}
return results;
}
Прочитайте значение, как показано ниже
string[] strResult = stringarray(16);
foreach (var item in strResult)
{
Console.WriteLine(item);
}
Console.Read();
Ответ №3:
Проблема также может быть решена таким образом :
private static string[] StringArrays(int arrayLength) =>
Enumerable
.Range(0, arrayLength)
.Select(
ComputeDarudeOrSandstormOrBoth
)
.ToArray();
private static string ComputeDarudeOrSandstormOrBoth(int value)
{
bool isDividableBy3 = value % 3 == 0;
bool isDividableBy5 = value % 3 == 0;
return
isDividableBy3 amp;amp; isDividableBy5
?
"Darude Sandstorm"
:
isDividableBy3
?
"Darude"
:
isDividableBy5
?
"Sandstorm"
:
value.ToString();
}