Нужна помощь для увеличения на 1 с помощью цикла for. Каждый раз увеличивайте только на 1

#c# #for-loop #increment

#c# #цикл for #увеличение

Вопрос:

Итак, у меня есть метод подсчета очков, который запускается после того, как мы сыграем, и снова, если пользователь захочет повторить игру. Я показываю оценки в нем.

Например

Первая попытка :

 Game 1 : He scored 20
  

затем пользователь решает повторить игру, получает другой результат. Затем я хочу, чтобы это отображалось.

Вторая попытка :

 Game 1 : He scored 20

Game 2 : He scored 10
  

Третья попытка: и т. Д

 Game 1 : He Scored 20

Game 2 : He scored 10

Game 3 : He scored 5
  

Я попытался использовать цикл for внутри foreach, а затем поместить i в другой int

 public void HighScore()
        {
            int gameList = 1;
            foreach (var item in Points)
            {
                for (int i = 1; i < Points.Count; i  )
                {
                    gameList = i  ;
                }
                Console.WriteLine($"{name} : Game {gameList} Score : {item} : Level [{GameLevel}]");
            }
        }
  

//Points — это список Int

// Я хочу изменить игровые номера Game 1, 2, 3, 4,.

Ответ №1:

Нет необходимости в for цикле:

 public void HighScore()
    {
        int gameList = 1;
        foreach (var item in Points)
        {
            Console.WriteLine($"{name} : Game {gameList} Score : {item} : Level [{GameLevel}]");
            gameList  ;
        }
    }
  

Ответ №2:

 // use like this 
gameList  ;

// instead of doing this
gameList = i  ;
  

Я надеюсь, что теперь вы исправите.

Ответ №3:

Сначала вам не нужен цикл for.Создайте класс для точки доступа для каждой игры, чтобы регулярно хранить их, как указано выше.

     public class Score
    {
        public Score(int point ,int game)
        {
            Point = point;
            Game = game;
        }

        public int Point { get; set; }
        public int Game { get; set; }


    }
  

А затем создайте глобальную переменную

 List<Score> scores = new List<Score>();
  

таким образом, вы можете сохранить свой счет и количество игр.

     int point = 10;//any number
    int lastGame = (scores.Any()) ? scores.Last().Game : 0;//this is about first game if no score its first game
    scores.Add(new Score(point, lastGame  = 1));
  

вы можете показать пользователю, что с циклом удобно.

 foreach(var score in scores){
Console.WriteLine($"Game {score.Game} Point: {score.Point}");

}
    Game  Score
     1      10
     2      20
  

Ответ №4:

Попробуйте ниже.

Используйте gameList вместо gameList = i ; унарного оператора увеличения

 public static void HighScore()
{
    int gameList = 1;
    List<int> Points = new List<int>() { 10,20,39,40,50};

    foreach (var item in Points)
    {
       Console.WriteLine($"Game {gameList} Score : {item}");

        gameList  ;

    }
}
  

Комментарии:

1. Вы это тестировали?

2. Вы получили ошибку? Очевидно, что вывод не будет таким же, но это «Унарный оператор увеличения» » — это то, что он ищет.

3. Вы каждый раз добавляете длину списка к номеру игры, поэтому игры пронумерованы 5, 9, 13 и т.д. Я думаю, что OP хотел 1, 2, 3.

4. @iakobski хорошо заметил. Спасибо. Обновил мой ответ.