所以程序运行正常,但由于某种原因,在第二次通过时,它完全跳过Console.ReadLine()提示.我经历了调试并确认它不是一个循环问题,因为它实际上正在进入该方法,显示WriteLine然后完全跳过ReadLine,从而返回一个空白回Main()导致它退出.什么是平分?有任何想法吗?
这是代码.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LAB4B
{
class Program
{
static void Main(string[] args)
{
string inString;
ArrayList translatedPhrase = new ArrayList();
DisplayInfo();
GetInput(out inString);
do
{
GetTranslation(inString, translatedPhrase);
DisplayResults(inString, translatedPhrase);
GetInput(out inString);
} while (inString != "");
}
static void DisplayInfo()
{
Console.WriteLine("*** You will be prompted to enter a string of ***");
Console.WriteLine("*** words. The string will be converted into ***");
Console.WriteLine("*** Pig Latin and the results displayed. ***");
Console.WriteLine("*** Enter as many strings as you would like. ***");
}
static void GetInput(out string words)
{
Console.Write("\n\nEnter a group of words or ENTER to quit: ");
words = Console.ReadLine();
}
static void GetTranslation(string originalPhrase, ArrayList translatedPhrase)
{
int wordLength;
string[] splitPhrase = originalPhrase.Split();
foreach (string word in splitPhrase)
{
wordLength = word.Length;
translatedPhrase.Add(word.Substring(1, wordLength - 1) + word.Substring(0, 1) + "ay");
}
}
static void DisplayResults(string originalString, ArrayList translatedString)
{
Console.WriteLine("\n\nOriginal words: {0}", originalString);
Console.Write("New Words: ");
foreach (string word in translatedString)
{
Console.Write("{0} ", word);
}
Console.Read();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为你Console.Read()的DisplayResults方法调用.它通常只读取一个字符.如果你按下ENTER(实际上是2个字符的组合 - 回车和换行),Console.Read()它只会得到回车字符,并且换行符到你的下一个控制台读取方法 - Console.ReadLine()在GetInput()方法中.由于换行符也是linux ENTER字符,因此Console.ReadLine()将其读作一行.
| 归档时间: |
|
| 查看次数: |
6114 次 |
| 最近记录: |