C# 拉丁语翻译
我将创建一个程序,将英语单词翻译成拉丁语。。。我对下面代码的问题是,结果中报告的数组最后一个索引中唯一的单词是什么?有人看到错误了吗 提前谢谢C# 拉丁语翻译,c#,foreach,C#,Foreach,我将创建一个程序,将英语单词翻译成拉丁语。。。我对下面代码的问题是,结果中报告的数组最后一个索引中唯一的单词是什么?有人看到错误了吗 提前谢谢 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnTrans_Click( object sender, EventArgs e ) { st
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnTrans_Click( object sender, EventArgs e )
{
string engWordText = engWord.Text.ToString();
string let1;
string restLet;
int position;
string pigLatin = "";
string vokal = "AEIOUaeiou";
// split the sentence into individual words
//string[] words = engWordText.Split(' ');
string[] transWord = engWordText.Split(' ');
// translate each word into pig latin
foreach (string word in transWord)
{
// check for empty TextBox
try
{
let1 = word.Substring(0, 1);
restLet = word.Substring(1, word.Length - 1);
position = vokal.IndexOf(let1);
if (position == -1)
{
pigLatin = restLet + let1 + "ay";
}
else
{
pigLatin = word + "way";
}
// display the translation
latinInput.Text = pigLatin.ToString();
engWord.Clear();
}
catch (System.ArgumentOutOfRangeException)
{
MessageBox.Show("Du måste skriva in ett engelskt ord", "PigLatin",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
} // end method translateButton_Click
// pressing enter is the same as clicking the Translate Button
private void engWordText_KeyDown( object sender, KeyEventArgs e )
{
// allow user to press enter in TextBox
if ( e.KeyCode == Keys.Enter )
btnTrans_Click( sender, e );
} // end method inputTextBox_KeyDown
} // end class PigLatinForm
将
pigLatin
的值分配给每个循环末尾的文本框的文本属性,这意味着它将只具有最后分配给它的值。试试这个:
List<string> plWords = new List<string>();
// translate each word into pig latin
foreach (string word in transWord)
{
// check for empty TextBox
try
{
let1 = word[0];
restLet = word.Substring(1, word.Length - 1);
if (!vokal.Contains(let1))
{
pigLatin = restLet + let1 + "ay";
}
else
{
pigLatin = word + "way";
}
plWords.Add(pigLatin);
}
catch (System.ArgumentOutOfRangeException)
{
MessageBox.Show("Du måste skriva in ett engelskt ord", "PigLatin",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
engWord.Clear();
latinInput.Text = string.Join(" ", plWords.ToArray());
将
pigLatin
的值分配给每个循环末尾的文本框的文本属性,这意味着它将只具有最后分配给它的值。试试这个:
List<string> plWords = new List<string>();
// translate each word into pig latin
foreach (string word in transWord)
{
// check for empty TextBox
try
{
let1 = word[0];
restLet = word.Substring(1, word.Length - 1);
if (!vokal.Contains(let1))
{
pigLatin = restLet + let1 + "ay";
}
else
{
pigLatin = word + "way";
}
plWords.Add(pigLatin);
}
catch (System.ArgumentOutOfRangeException)
{
MessageBox.Show("Du måste skriva in ett engelskt ord", "PigLatin",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
engWord.Clear();
latinInput.Text = string.Join(" ", plWords.ToArray());
将
pigLatin
的值分配给每个循环末尾的文本框的文本属性,这意味着它将只具有最后分配给它的值。试试这个:
List<string> plWords = new List<string>();
// translate each word into pig latin
foreach (string word in transWord)
{
// check for empty TextBox
try
{
let1 = word[0];
restLet = word.Substring(1, word.Length - 1);
if (!vokal.Contains(let1))
{
pigLatin = restLet + let1 + "ay";
}
else
{
pigLatin = word + "way";
}
plWords.Add(pigLatin);
}
catch (System.ArgumentOutOfRangeException)
{
MessageBox.Show("Du måste skriva in ett engelskt ord", "PigLatin",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
engWord.Clear();
latinInput.Text = string.Join(" ", plWords.ToArray());
将
pigLatin
的值分配给每个循环末尾的文本框的文本属性,这意味着它将只具有最后分配给它的值。试试这个:
List<string> plWords = new List<string>();
// translate each word into pig latin
foreach (string word in transWord)
{
// check for empty TextBox
try
{
let1 = word[0];
restLet = word.Substring(1, word.Length - 1);
if (!vokal.Contains(let1))
{
pigLatin = restLet + let1 + "ay";
}
else
{
pigLatin = word + "way";
}
plWords.Add(pigLatin);
}
catch (System.ArgumentOutOfRangeException)
{
MessageBox.Show("Du måste skriva in ett engelskt ord", "PigLatin",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
engWord.Clear();
latinInput.Text = string.Join(" ", plWords.ToArray());
你想要
pigLatin+=
而不是pigLatin=
。你想要pigLatin+=
而不是pigLatin=
。你想要pigLatin+=
而不是pigLatin=
。谢谢你=)但是现在我得到了“错误1方法“Join”的无重载包含1个参数”请尝试我更新的最后一行:latinInput.Text=plWords.ToArray().Join(“”;
抱歉。第三次是个魅力。:)如果您使用的是.NET 4.0或更高版本,可以省去.ToArray()
部分。列表有点过分,你可以简单地通过将pigLatin=
更改为pigLatin+=
并将latinput.Text=pigLatin
移动到foreach
循环之外来解决这个问题。@CodeCaster是的,当然你可以通过将=
更改为+=/code>来让程序工作,但是你是很难做到的eft使用~20行foreach
循环,其唯一功能是用pig拉丁语填充一个特定的文本框。将其分为两个步骤:(a)[将英语单词列表转换为pig拉丁语],(b)[用单词列表填充文本框]结果产生了更多模块化和可重用的代码。是的,您可以将latinInput.Text=pigLatin
移出循环,但我仍然认为生成一个单词列表而不仅仅是一个字符串是更好的做法。谢谢=)但是现在我得到了“错误1方法'Join'不重载1个参数”请尝试我更新的最后一行:latinInput.Text=plWords.ToArray().Join(“”)代码>对不起。第三次是一种魅力如果您使用的是.NET 4.0或更高版本,您可以省去.ToArray()
部分。列表有点过分,您只需将pigLatin=
更改为pigLatin+=
并将latinput.Text=pigLatin
移动到foreach
循环之外即可解决此问题。@CodeCaster是,当然,您只需将=
更改为+=
,就可以使程序正常工作,但接下来您将得到一个~20行foreach
循环,其唯一功能是用pig拉丁语填充一个特定的文本框。将其分为两个步骤:(a)[将英语单词列表转换为拉丁语],(b)[用单词列表填充文本框]将产生更多模块化和可重用的代码。是的,您可以将latinInput.Text=pigLatin
移动到循环之外,但我仍然认为生成一个单词列表而不仅仅是一个字符串是更好的做法。谢谢=)但是现在我得到了“错误1方法'Join'没有重载需要1个参数”请尝试我更新的最后一行:latinInput.Text=plWords.ToArray().加入(“”)代码>对不起。第三次是一种魅力如果您使用的是.NET 4.0或更高版本,您可以省去.ToArray()
部分。列表有点过分,您只需将pigLatin=
更改为pigLatin+=
并将latinput.Text=pigLatin
移动到foreach
循环之外即可解决此问题。@CodeCaster是,当然,您只需将=
更改为+=
,就可以使程序正常工作,但接下来您将得到一个~20行foreach
循环,其唯一功能是用pig拉丁语填充一个特定的文本框。将其分为两个步骤:(a)[将英语单词列表转换为拉丁语],(b)[用单词列表填充文本框]将产生更多模块化和可重用的代码。是的,您可以将latinInput.Text=pigLatin
移动到循环之外,但我仍然认为生成一个单词列表而不仅仅是一个字符串是更好的做法。谢谢=)但是现在我得到了“错误1方法'Join'没有重载需要1个参数”请尝试我更新的最后一行:latinInput.Text=plWords.ToArray().加入(“”)代码>对不起。第三次是一种魅力如果您使用的是.NET 4.0或更高版本,您可以省去.ToArray()
部分。列表有点过分,您只需将pigLatin=
更改为pigLatin+=
并将latinput.Text=pigLatin
移动到foreach
循环之外即可解决此问题。@CodeCaster是,当然,您只需将=
更改为+=
,就可以使程序正常工作,但接下来您将得到一个~20行foreach
循环,其唯一功能是用pig拉丁语填充一个特定的文本框。将其分为两个步骤:(a)[将英语单词列表转换为拉丁语],(b)[用单词列表填充文本框]将产生更多模块化和可重用的代码。是的,您可以将latinInput.Text=pigLatin
移动到循环之外,但我仍然认为生成单词列表而不仅仅是单个字符串是更好的做法。