黑马程序员技术交流社区
标题:
这段代码不用 goto 怎么做 ?
[打印本页]
作者:
秦二江
时间:
2013-5-20 08:53
标题:
这段代码不用 goto 怎么做 ?
本帖最后由 秦二江 于 2013-5-24 06:36 编辑
// 去掉重复字符
Console.WriteLine("请输入");
// 1. 接收用户输入
string str = Console.ReadLine();
//2. 将用户输入 转换成 char 数组
char[] strchar = str.ToCharArray();
//3. 定义一个 字典集合 用来接收 去掉用户输入的重复 的字符 后的 字符
Dictionary<int, char> dic = new Dictionary<int, char>();
//4. 用循环 来让前面 的字符 跟 后面的字符 依次相比 一直到最后一个
for (int i = 0; i < strchar.Length; i++)
{
//5. 在 char 下标 范围内 执行 if 结构
if ((i + 1) < strchar.Length)
{
//6. 一开始 就有 连续相等( 像 wwwwfedf 这样 )
if (strchar
== strchar[i + 1])
{
//7. 跳过 本次循环,从第二个字符开始 再次循环 即 跳到 4.
continue;
}
}
// 执行到这里 说明 前面没有 相等 ( wwwfedf 即执行到 该让 w 一次于后面的字符相比 )
for (int j = i + 1; j < strchar.Length; j++)
{
// 如果 后面仍然有相等的 则执行 if 结构
if (strchar
== strchar[j])
{
// 有相等 ,跳到 aa 标签处 结束 这个子符的 相比
goto aa;
}
}
//( 即 我想取 重复字符中 的最后一个 ,最后一个才会添加 到集合 中)
dic.Add(i, strchar
);
aa: ;
}
// 去掉 重复字符 后 的所有字符 都被添加到 字典集合中了,现在遍历 字典集合 ,输出到控制台
foreach (KeyValuePair<int, char> w in dic)
{
Console.Write(w.Value);
}
Console.ReadKey();
作者:
刘赛
时间:
2013-5-20 09:14
for (int i = 0; i < strchar.Length; i++)
{
//5. 在 char 下标 范围内 执行 if 结构
if ((i + 1) < strchar.Length)
{
//6. 一开始 就有 连续相等( 像 wwwwfedf 这样 )
if (strchar == strchar[i + 1])
{
//7. 跳过 本次循环,从第二个字符开始 再次循环 即 跳到 4.
continue;
}
}
// 执行到这里 说明 前面没有 相等 ( wwwfedf 即执行到 该让 w 一次于后面的字符相比 )
for (int j = i + 1; j < strchar.Length; j++)
{
// 如果 后面仍然有相等的 则执行 if 结构
if (strchar != strchar[j])
{
//( 即 我想取 重复字符中 的最后一个 ,最后一个才会添加 到集合 中)
dic.Add(i, strchar);
}
}
}
复制代码
不知道这样行不行
作者:
郎吉祥
时间:
2013-5-20 12:24
本帖最后由 郎吉祥 于 2013-5-20 12:29 编辑
for (int i = 0; i < strchar.Length-1; i++)
{
if (strchar
== strchar[i + 1])
{
if (i+1== strchar.Length - 1)
{
dic.Add(i+1, strchar[i+1]);
}
continue;
}
dic.Add(i, strchar
);
if (i + 1 == strchar.Length - 1)
{
dic.Add(i + 1, strchar[i + 1]);
}
}
我把2个for循环改了。这样就可以了。完全没必要用到goto这么麻烦,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2