| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 506 人关注过本帖
标题:【求助】究竟哪里错了?不明白
只看楼主 加入收藏
lxsxd
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:153
专家分:357
注 册:2014-4-15
结帖率:96.15%
收藏
已结贴  问题点数:5 回复次数:5 
【求助】究竟哪里错了?不明白
一、题目
编一个程序,定义三个float类型变量x,y和z,输入三个实数,不用数组,要求对这三个变量按照升序排序,然后输出结果。
二、代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace my
{
    class Program
    {
        static void Main()
        {

            float x, y, z;
            float max, min;
            int i = 1;
            do
            {
                swtich(i);
                {
                    case 1:
                    Console.WriteLine("请输入X:");
                    x=Console.ReadLine();
                    i++;
                    break;
                    case 2:
                    Console.WriteLine("请输入Y:");
                    y=Console.ReadLine();
                    i++;
                    break;
                    case 3:
                    Console.WriteLine("请输入Z:");
                    z=Console.ReadLine();
                    i++;
                    break;

                }

            }
            while(i<=3);

            max=Math.Max(Math.Max(x,y),z);
            min=Math.Min(Math.Min(x,y),z);

            Console.WriteLine("输入的X,Y,Z是:{0}\t{1}\t{2}",x,y,z);
            Console.WriteLine("按升序排序是:{0}\t{1}\t{2}",min,x+y+z-max-min,max);
            
            Console.ReadLine();
        }
              
    }
}

三、错误提示

错误    1    无效的表达式项“case”    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    20    21    my
错误    2    应输入 ;    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    20    27    my
错误    3    无效的表达式项“:”    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    20    27    my
错误    4    应输入 ;    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    20    28    my
错误    5    无效的表达式项“case”    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    25    21    my
错误    6    应输入 ;    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    25    27    my
错误    7    无效的表达式项“:”    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    25    27    my
错误    8    应输入 ;    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    25    28    my
错误    9    无效的表达式项“case”    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    30    21    my
错误    10    应输入 ;    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    30    27    my
错误    11    无效的表达式项“:”    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    30    27    my
错误    12    应输入 ;    D:\用户目录\Documents\Visual Studio 2008\Projects\my\my\Program.cs    30    28    my

四、困惑
1、应输入处。按照书本上,明明是用冒号(:)的,可提示却要用分号(;)
2、无效表达项case  .我实在不明白,swtich语句的用法就是这样的,怎么case这项就错误了呢??
2014-05-18 11:01
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:5 
swtich(i);写错了,应为switch,另外switch(i)后面不要有分号
2014-05-18 14:42
lxsxd
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:153
专家分:357
注 册:2014-4-15
收藏
得分:0 
感谢信
------
    感谢yhlvht的指点,的确switch关键字错了,另外多了一个分号。

    追问:我把代码改成如下,出现新的错误,我有不明白的地方。

一、代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace my
{
    class Program
    {
        static void Main()
        {

            float x, y, z;
            float max, min;
            int i = 1;
            do
            {
                switch(i)
                {
                    case 1:
                    Console.WriteLine("请输入X:");
                    x=float.Parse(Console.ReadLine());
                    i++;
                    break;
                    case 2:
                    Console.WriteLine("请输入Y:");
                    y = float.Parse(Console.ReadLine());
                    i++;
                    break;
                    case 3:
                    Console.WriteLine("请输入Z:");
                    z = float.Parse(Console.ReadLine());
                    i++;
                    break;

                }

            }
            while(i<=3);

            max=Math.Max(Math.Max(x,y),z);
            min=Math.Min(Math.Min(x,y),z);

            Console.WriteLine("输入的X,Y,Z是:{0}\t{1}\t{2}",x,y,z);
            Console.WriteLine("按升序排序是: {0}\t{1}\t{2}",min,x+y+z-max-min,max);
            
            Console.ReadLine();
        }
              
    }
}
二、错误提示
   提示:语句max=Math.Max(Math.Max(x,y),z);使用了没有赋值的X\Y\Z。
三、困惑

     定义float x,y,z;
     本来这三个值就是要等键盘输入的,为什么要先赋值呢??

艰难地走在C#自学的路上…………
2014-05-18 18:45
lxsxd
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:153
专家分:357
注 册:2014-4-15
收藏
得分:0 
回复 2 楼 yhlvht
感谢信
------
    感谢yhlvht的指点,的确switch关键字错了,另外多了一个分号。

    追问:我把代码改成如下,出现新的错误,我有不明白的地方。

一、代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace my
{
    class Program
    {
        static void Main()
        {

            float x, y, z;
            float max, min;
            int i = 1;
            do
            {
                switch(i)
                {
                    case 1:
                    Console.WriteLine("请输入X:");
                    x=float.Parse(Console.ReadLine());
                    i++;
                    break;
                    case 2:
                    Console.WriteLine("请输入Y:");
                    y = float.Parse(Console.ReadLine());
                    i++;
                    break;
                    case 3:
                    Console.WriteLine("请输入Z:");
                    z = float.Parse(Console.ReadLine());
                    i++;
                    break;

                }

            }
            while(i<=3);

            max=Math.Max(Math.Max(x,y),z);
            min=Math.Min(Math.Min(x,y),z);

            Console.WriteLine("输入的X,Y,Z是:{0}\t{1}\t{2}",x,y,z);
            Console.WriteLine("按升序排序是: {0}\t{1}\t{2}",min,x+y+z-max-min,max);
            
            Console.ReadLine();
        }
              
    }
}
二、错误提示
   提示:语句max=Math.Max(Math.Max(x,y),z);使用了没有赋值的X\Y\Z。
三、困惑

     定义float x,y,z;
     本来这三个值就是要等键盘输入的,为什么要先赋值呢??

艰难地走在C#自学的路上…………
2014-05-18 18:46
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
因为电脑比较笨呀,它不知道i是等于1的,所以一定会执行case 1
它只是在想,如果switch语句没有进去的话,如果直接跳过了do while循环的话,那么x,y,z是没有赋值的,是不能用于计算max的
所以给x,y,z赋一个初始值就好了
编译器不会检查变量i赋的值是多少,如果你给i赋一个大于3的值,就可能真的出问题袄
2014-05-18 21:33
lxsxd
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:153
专家分:357
注 册:2014-4-15
收藏
得分:0 
感谢信
---------
    谢谢您的解答。

艰难地走在C#自学的路上…………
2014-05-19 07:51
快速回复:【求助】究竟哪里错了?不明白
数据加载中...
 
   



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

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