标题:编程题找错
只看楼主
nikexu123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-5-14
结帖率:100%
已结贴  问题点数:10 回复次数:6 
编程题找错
using System;
namespace Project1
{
    class hebin
    {      
        public void sb(char[] str1, char[] str2)
        {
            int i, j=0;
          for (i = 0; i < str1.Length; i++)
            {
                if (str1[i] == str1[i + 1])
                    i++;
                else
                { str2[j] = str1[i]; j++; }
                for (int k = 0; k < str2.Length; k++)
                { Console.WriteLine(str2[k]); }
            }
        }
        class Program
        {

            static void Main()
            {
                int i;
                char[] s1; char[] s2;
                hebin xubin = new hebin();
                for (i = 0; i<100;i++ )
                 s1[i] = Console.ReadKey().KeyChar;
                xubin.sb(s1, s2);

            }
        }

    }
}
搜索更多相关主题的帖子: 编程 public 
2010-05-14 23:11
yjsdlg
Rank: 1
等 级:新手上路
帖 子:18
专家分:7
注 册:2010-3-6
得分:0 
static void Main()
是不是有问题,定义了不止一个入口点。???
2010-05-14 23:19
adu_to
Rank: 2
等 级:论坛游民
帖 子:12
专家分:75
注 册:2010-4-21
得分:8 
1、从定义的hebin类开始说,(i<str1.Length)又引用str1[i+1],会使数组溢出;
2、把第2个for循环移出到第一个for循环外面。
3、即使没有上面的错误,hebin类的功能只是把相邻的相同的字符给合并成一个;
4、main()函数里面没有把s1和s2初始化;用char[] s1=new char[100]初始化这个程序就可以运行了。

[ 本帖最后由 adu_to 于 2010-5-15 13:06 编辑 ]
2010-05-15 13:05
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:2 
把class Program 提出到class hebin之外。
2010-05-15 16:18
nikexu123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-5-14
得分:0 
感谢大家的智慧,这题问题是合并一个字符串相邻的字符
2010-05-15 19:59
nikexu123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-5-14
得分:0 
大虾们,为什么程序可以运行但输入字符串后敲击回车没反应,以下是代码:
using System;
namespace Project1
{
    class hebin
    {
        public void sb(char[] str1, char[] str2)
        {
            int i, j = 0;
            for (i = 0; i < str1.Length; i++)
            {
                if (str1[i] == str1[i + 1])
                    i++;
                else
                { str2[j] = str1[i]; j++; }
            }
            for (int k = 0; k < str2.Length; k++)
            { Console.WriteLine(str2[k]); }

        }
    }
    class Program
    {

        static void Main()
        {
            int i;
            char[] s1; char[] s2;
            s1 = new char[100];
            s2 = new char[100];
            hebin xubin = new hebin();
            for (i = 0; i < 100; i++)
                s1[i] = Console.ReadKey().KeyChar;

            xubin.sb(s1, s2);

        }
    }

}
2010-05-15 20:54
adu_to
Rank: 2
等 级:论坛游民
帖 子:12
专家分:75
注 册:2010-4-21
得分:0 
想要敲回车执行,则需要在main()函数里的循环语句中加入判断语句:
程序代码:
for(i=0;i<100;i++)
{
  if((si[i]=Console.ReadKey().KeyChar)!='/r')

}

 
2010-05-15 22:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-306720-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.490767 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved