私はC#とオブジェクトプログラミングの初心者です。文字を読み込んで単語にし、行に書かれた単語からなる出力を生成するプログラムを作成しようとしていますが、行ごとに30文字しかないかもしれません。単語が30文字より長い場合は、行の最大許容長より長くなることがあります。C#で文字列を読み取り、それを境界線の線に分ける
これまで私がこれまで持っていたことは次のとおりです。それは動作しているようですが、私は最後に2つの余分な空白を作るのが好きではありません。また、このプログラムを行うためのより効果的な方法がありますか、おそらくもっと短くて、「ちょっと」ですか?ありがとうございました。
class Program
{
public static readonly int MAX_LENGTH = 30; // max number of characters in one line
public static int counter = 0; // counts characters in line
public static bool OverMaxLength(string word) // chcecks, whether the words is bigger than MAX_LENGTH
{
return (word.Length >= MAX_LENGTH);
}
public static void AddToCounter(string word, ref int counter) // adds the length of word into the counter
{
counter += word.Length;
}
public static void CheckIfOverflow(string word, ref int counter)
{
if (counter > MAX_LENGTH) // if counter counts more than is allowed
{
Console.WriteLine();
Console.Write(word + " ");
counter = word.Length + 1;
}
else
{
Console.Write(word + " ");
counter += 1;
}
}
public static string ReadWord()
{
string word = "";
char c;
// reads one character
c = Convert.ToChar(Console.Read());
do
{
word += c;
c = Convert.ToChar(Console.Read());
} while (c != ' ');
return word;
}
static void Main(string[] args)
{
string word = "";
word = ReadWord();
while (word != "konec")
{
if ((OverMaxLength(word)) & (counter > 0))
{
Console.WriteLine();
Console.WriteLine(word);
counter = 0;
}
else if ((OverMaxLength(word)) & (counter == 0))
{
Console.Write(word);
counter = word.Length;
}
else
{
AddToCounter(word, ref counter);
CheckIfOverflow(word, ref counter);
}
word = ReadWord();
}
Console.Read();
}
}
。私はあなたの質問に入れて努力を感謝します。 –