Loading...
Elena123456 avatar Elena123456 235 Точки

2. Articles - проблем с извикването на ToString()

Моля за помощ отностно извикването на ToString() метода. Изписва следното: "Redundant 'ToString()' Call" (44 ред). В лекцията методът работи, но не и при мен, че дори и да използвам отделна променлива преди да печатам резултата. Може отново проблема да е заради MonoDevelop.

2. Articles
Create a class Article with the following properties:
 Title – a string
 Content – a string
 Author – a string
The class should have a constructor and the following methods:
 Edit (new content) – change the old content with the new one
 ChangeAuthor (new author) – change the author
 Rename (new title) – change the title of the article
 Override the ToString method – print the article in the following format:
{title} - {content}: {autor};
Write a program that reads an article in the following format "{title}, {content}, {author}". On the next line,
you will receive a number n, representing the number of commands, which will follow after it. On the next n lines,
you will be receiving the following commands: "Edit: {new content}"; "ChangeAuthor: {new author}";
"Rename: {new title}". At the end, print the final state of the article.

 

Input

some title, some content, some author
3
Edit: better content
ChangeAuthor: better author
Rename: better title

Output

better title - better content: better author

 

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



namespace ObjectsAndClasses
{
    class MainClass
    {
        public static void Main()
        {

            string[] input = Console.ReadLine().Split(", ".ToCharArray()).ToArray();
            int n = int.Parse(Console.ReadLine());


            Article article = new Article();

            article.Title = input[0];
            article.Content = input[1];
            article.Author = input[2];

            for (int i = 0; i < n; i++)
            {
                string[] command = Console.ReadLine().Split(": ".ToCharArray()).ToArray();


                if (command[0] == "Edit")
                {
                    article.Edit(command[1]);
                }

                else if (command[0] == "ChangeAuthor")
                {
                    article.ChangeAuthor(command[1]);
                }

                else if (command[0] == "Rename")
                {
                    article.Rename(command[1]);
                }
            }
            Console.WriteLine(article.ToString());
        }

        public class Article
        {
            public object Title { get; set; }
            public object Content { get; set; }
            public object Author { get; set; }


            public void Edit(string newContent)
            {
                Content = newContent;
            }

            public void ChangeAuthor(string newAuthor)
            {
                Author = newAuthor;
            }

            public void Rename(string newTitle)
            {
                Title = newTitle;
            }

            public override string ToString()
            {
                return $"{Title} - {Content}{Author}";
            }

        }
    }
}
 

0
Fundamentals Module 25/08/2020 00:11:46
krum_43 avatar krum_43 731 Точки

Какъв е смисъла да кастваш командата към масив от чарове след като после и казваш ToArray();

 string[] command = Console.ReadLine().Split(": ".ToCharArray()).ToArray();

 

1
28/08/2020 07:29:00
Elena123456 avatar Elena123456 235 Точки

Здравейте,

благодаря за отговора Ви.

Да, проверих, че програмата не се чупи без ".ToArray()" накрая и няма нужда от него. Бях го сложила за да съм сигурна, че входа ще бъде string [], а не char [].

Моля, бихте ли обяснили защо програмата работи и без ".ToArray()" накрая?

А ето по този начин, ако го оставя инпута вече не работи и ми подчертава всичко, което е в Split():  "string[] input = Console.ReadLine().Split(", ").ToArray();

Поздрави!

0
krum_43 avatar krum_43 731 Точки

Пробвай да замениш кавичките с апостроф  ','   !

string[] input = Console.ReadLine().Split(', ').ToArray();

 

 

 

 

1
29/08/2020 17:44:39
Elena123456 avatar Elena123456 235 Точки

За съжаление отново при мен на MonoDevelop не се получава. Само когато имам един символ мога да използвам апостроф.

В случая, когато заменя кавичките с апостроф изписва следното-"Too many characters in character literal", защото освен символа имам и празен спейс.

Но съм предоволна, че поне така работи:  string[] input = Console.ReadLine().Split(", ".ToCharArray());

Благодаря, че вметнахте, че може и без ToArray() накрая. Ще го имам предвид за вбъдеще.

 

 

1
krum_43 avatar krum_43 731 Точки

Щом има и интервал трябва да е в кавички.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.