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}";
}
}
}
}
Здравейте,
благодаря за отговора Ви.
Да, проверих, че програмата не се чупи без ".ToArray()" накрая и няма нужда от него. Бях го сложила за да съм сигурна, че входа ще бъде string [], а не char [].
Моля, бихте ли обяснили защо програмата работи и без ".ToArray()" накрая?
А ето по този начин, ако го оставя инпута вече не работи и ми подчертава всичко, което е в Split(): "string[] input = Console.ReadLine().Split(", ").ToArray();
Поздрави!
Пробвай да замениш кавичките с апостроф ',' !
string[] input = Console.ReadLine().Split(', ').ToArray();
За съжаление отново при мен на MonoDevelop не се получава. Само когато имам един символ мога да използвам апостроф.
В случая, когато заменя кавичките с апостроф изписва следното-"Too many characters in character literal", защото освен символа имам и празен спейс.
Но съм предоволна, че поне така работи: string[] input = Console.ReadLine().Split(", ".ToCharArray());
Благодаря, че вметнахте, че може и без ToArray() накрая. Ще го имам предвид за вбъдеще.
Щом има и интервал трябва да е в кавички.