【问题标题】:how to have a comma after each string but not in front如何在每个字符串后加逗号但不在前面
【发布时间】:2017-01-27 21:53:06
【问题描述】:

我的班级有问题,它在显示字符串之前显示逗号,我无法找到将逗号放在前面并将其保留在所有其他地方的方法

using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Carnival
    {
        class Player
        {
            public string Name { get; set; }
            public double SpendingMoney { get; set; }
            public string PrizesWon { get; set; }


            //constructors
            public Player( string n, double sp)
            {
                Name = n;
                SpendingMoney = sp;
                PrizesWon = "";

            }
            //methods

                public string Play(GameBooth aGames)
            {
                string newPrize;
                if (SpendingMoney >= aGames.Cost)
                {
                    newPrize = aGames.Start();
                    //here is what I need to fix                    
                    PrizesWon =  "," + newPrize  + PrizesWon ;
                    return newPrize;
                     }
                else
                {
                    return "error no money fool";
                }
            }

        }
    }

如果需要,这里是主要代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Carnival
{
    class Program
    {
        static void Main(string[] args)
        {
            //local variables
            string name;
            double money;
            int choice = 0;
            string newPrize;

            //Game objects.
            GameBooth balloonDartToss = new GameBooth(2, "tiger         plush", "sticker");
            GameBooth ringToss = new GameBooth(2, "bear keychain", "pencil");
            GameBooth breakAPlate = new GameBooth(1.5, "pig plush", "plastic dinosaur");

            Console.ForegroundColor = ConsoleColor.Cyan;

            //asking player name
            Console.Write("Welcome to the Carnival. What is your name? ");
            name = Console.ReadLine();

            //asking how much spending money the player has
            Console.Write("How much money do you have? ");
            money = Convert.ToDouble(Console.ReadLine());
            Console.ResetColor();

            //Creating player object.
            Player Gambler = new Player(name, money);

            //main program loop
            while (choice != 4)
            {
                //print menu. Check out the local method below
                printMenu();

                //retrieve user choice. See the local method below
                choice = getChoice();

                //main switch. User Choices:
                //  1 - we play Baloon Darts Toss and show prize
                //  2 - we play ring Toss and show prize
                //  3 - we play Break a Plate and show prize
                //  4 - Show users all his prizes
                switch (choice)
                {
                    case 1:
                        newPrize = Gambler.Play(balloonDartToss);
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine(newPrize);
                        break;
                    case 2:
                        newPrize = Gambler.Play(ringToss);
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine(newPrize);
                        break;
                    case 3:
                        newPrize = Gambler.Play(breakAPlate);
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine(newPrize);
                        break;
                    case 4:
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine("{0}, here is your prize list: {1}", Gambler.Name, Gambler.PrizesWon);
                        Console.ResetColor();
                        break;
                }//end switch
            }//end while

            //next line simply pauses the program until you hit Enter.
            Console.ReadLine();
        }//end main

        //this method prints the main menu
        public static void printMenu()
        {
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine();
            Console.WriteLine("Select the game you would like to play:");
            Console.WriteLine("1. Balloon Dart Toss");
            Console.WriteLine("2. Ring Toss");
            Console.WriteLine("3. Break a Plate");
            Console.WriteLine("4. Get Prizes and Leave Carnival");
            Console.Write("Enter Your Choice: ");
            Console.ResetColor();
        }//end printMenu

        //this methods accepts user input 1-4
        public static int getChoice()
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            int input = 0;
            do
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                input = Convert.ToInt32(Console.ReadLine());
                if (input < 1 || input > 4)
                {
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine("Out of range. Input 1-4 only");
                    Console.Write("Enter your choice: ");
                    Console.ResetColor();
                }
            } while (input < 1 || input > 4);
            Console.ResetColor();
            return input;
        }
    }
}

如果你也需要的话,这是我的另一门课,但你可能不需要

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Carnival
{
    class GameBooth
    {
        //properties
        public double Cost { get; set; }
        public string FirstPrize { get; set; }
        public string ConsolationPrize { get; set; }
        public int w { get; set; }
        public int l { get; set; }
        //constructors
        public GameBooth(double c, string fp, string cp)
        {
            Cost = c;
            FirstPrize = fp;
            ConsolationPrize = cp;

        }

        //methods
        public string Start()
        {
            Random r = new Random();
            w = 1;
            l = 1;
            for (int i = 1; i < 3; i++)
            {
               int randomChoice = r.Next(0, 400);
                if ( randomChoice == 1)
                {
                     w++;
                }

            }
            if (w == 3)
            {
                return FirstPrize;
            }
            else
            {
                return ConsolationPrize;
            }
        }
    }
}

【问题讨论】:

  • 你说的是哪个字符串?你能把你的问题缩小到你遇到问题的地方吗?
  • if (PrizesWon.startswith(',') ) PrizesWon=PrizesWon.substrng(1);... 在我的脑海中,但应该能让你到达那里。
  • 这需要很多代码。
  • 请阅读minimal reproducible example 发布代码指南。如果您正确地实施事情(例如奖品列表而不是字符串类型的代码)stackoverflow.com/questions/14959824/… 很可能是(重复的)答案。
  • string.Join(list of string, ",") => 类似这样的

标签: c#


【解决方案1】:

将该行更新为:

PrizesWon = string.IsNullOrEmpty(PrizesWon) ? newPrize : newPrize + "," + PrizesWon;

这使用 conditional operator 返回不同的结果,具体取决于 PrizesWon 中是否已有内容。

【讨论】:

  • 这有什么帮助?你能解释一下吗?
  • PrizesWon 为空时,条件 string.IsNullOrEmpty(PrizesWon) 返回 true - 如果是,则 PrizesWon 设置为 newPrize?: 之间的表达式)否则条件返回 false 并且 PrizesWon 设置为 newPrize + "," + PrizesWon: 之后的表达式)。换句话说 - 第一次添加奖品时,您不会添加逗号;为您获得的每个后续奖品。
【解决方案2】:

在您的代码中,您将 (,) 放在 newPrize 之前。为了解决这个问题,你必须把它放在PrizesWon 变量之后,它看起来像这样:

**PrizesWon =  newPrize + PrizesWon + ",";**

希望你的问题能得到解决。

【讨论】:

  • 这只会在后面多放一个
猜你喜欢
  • 2023-02-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
相关资源
最近更新 更多