每次添加新数字时,对 List<int> 的每个元素进行除法或乘法

Divide or multiply each element of a List<int> every time a new number is added

输入:一次输入一个数字。

输出:输入的列表,其中每个偶数除以 2,每个奇数乘以 3。

步骤是这样的:

  1. 输入 4 并得到输出 [2]
  2. 输入 8 并得到输出 [1,4]
  3. 输入 9 并得到输出 [3,2,27]

这是我当前的代码:

List<int> nummerListe = new List<int>();

while (true)
{
    Console.WriteLine("Geben Sie die Zahlen ein : ");
    string eingabe = Console.ReadLine();
    int nummer = int.Parse(eingabe);

    Console.WriteLine("Die Zahlen sind : ");
    nummerListe.Add(nummer);
    
    for (int i = 1; i <= nummerListe.Count; i++)
    {
        Console.WriteLine(nummerListe[i]);
        Console.Write(" , ");
        if (nummer % 2 == 0)
        {
            nummer /= 2;
            Console.WriteLine(nummerListe[0] = nummer);
        }
        else
        {
            nummer *= 3;
            Console.WriteLine(nummerListe[0]=nummer);
        }
    }
    
    Console.WriteLine("  ");
}

首先,您需要了解 C# 列表是从 0 基索引的,这意味着您的循环应该如下所示:

for (int i = 0; i < nummerListe.Count; i++)

而不是

for (int i = 1; i <= nummerListe.Count; i++)

那么你应该仔细检查一下:

Console.WriteLine(nummerListe[0] = nummer);

因为:
1 - 您必须将 0 替换为 i (nummerListe[i] = nummer)
2 - 你不想打印作业的结果(你现在这样做)。

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<int> nummerListe = new List<int>();
        while (true)
        {
            Console.WriteLine("Geben Sie die Zahlen ein : ");
            string eingabe = Console.ReadLine();
            int nummer = int.Parse(eingabe);
            Console.WriteLine("Die Zahlen sind : ");
            nummerListe.Add(nummer);
            nummerListe = nummerListe.Select(n => (n % 2 == 0) ? n / 2 : n * 3).ToList();
            Console.WriteLine(String.Join(", ", nummerListe));
        }
    }
}

你可以试试online.

您的代码存在一些问题:

  • 您从 1 而不是 0 开始循环,忽略了第一个元素。

  • 您正在更改 nummer 而不是列表中的实际元素。

  • 您总是将 nummer 的值分配给列表的第一个元素:nummerListe[0] = nummer.

尝试这样的事情:

List<int> nummerListe = new List<int>();

while (true)
{
    Console.WriteLine("Geben Sie die Zahlen ein : "); // Enter the number
    string eingabe = Console.ReadLine();
    int nummer = int.Parse(eingabe);  // Consider using int.TryParse() instead.
    nummerListe.Add(nummer);

    for (int i = 0; i < nummerListe.Count; i++)
    {
        if (nummerListe[i] % 2 == 0)
        {
            nummerListe[i] /= 2;
        }
        else
        {
            nummerListe[i] *= 3;
        }
    }

    Console.WriteLine("Die Zahlen sind : "); // Numbers
    Console.WriteLine(string.Join(",", nummerListe));
}