分享
 
 
 

一个恼人的错误~

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

上次课给学生出了一道题,编写一个Web服务,实现以下三个功能:查询成绩、查询平均分、查询排名。给出了下面的表格:

姓名

.NET技术

C#

XML

J2EE

JSP

A

85

84

90

80

85

B

90

76

78

85

78

C

67

66

64

85

80

D

90

78

65

78

80

E

64

60

67

78

80

这道题本是我一拍脑袋想出来的,所以需要自己来实现一下,老师都做不出来的话怎么交代。

于是就编写了下面的程序:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Web;

using System.Web.Services;

namespace WSExercise

{

public class Service1 : System.Web.Services.WebService

{

public Service1()

{

InitializeComponent();

}

#region 组件设计器生成的代码

private IContainer components = null;

private void InitializeComponent()

{

}

protected override void Dispose( bool disposing )

{

if(disposing && components != null)

{

components.Dispose();

}

base.Dispose(disposing);

}

#endregion

int i,j,Order; //定义全局变量i,j作为成绩数组中索引,Order存储名次

double[] EveryOne=new double[5]; //定义EveryOne数组存储平均成绩的副本

[WebMethod(Description="通过输入姓名和科目来查询学生成绩")]

public int GetScore(string Name,string Lession)

{

GetIByName(Name); //获得i的数值

GetJByLession(Lession); //获得j的数值

return Score[i,j]; //从成绩数组中返回成绩

}

[WebMethod(Description="通过输入姓名来查询学生平均分")]

public double GetAverage(string Name)

{

GetIByName(Name); //获得i的数值

Average(); //调用Average方法获得该生平均成绩

return average[i];

}

[WebMethod(Description="通过输入姓名来查询学生排名")]

public int GetOrder(string Name)

{

Average(); //调用Average方法获得该生平均成绩

EveryOne[i]=average[i]; //生成该生平均成绩的副本

for(int i=0;i<=3;i++) //冒泡法排序获得平均值从大到小的顺序

{

double big;

for(int j=0;j<=3;j++)

{

if(average[j]<average[j+1])

{

big=average[j+1];

average[j+1]=average[j];

average[j]=big;

}

}

}

GetIByName(Name); //获得j的数值

for(int a=0;a<=4;a++) //比较副本与变化后的平均值数组中的值

{

if(EveryOne[i]==average[a])

{

Order=a+1; //得到现在平均值数组中的索引+1,即名次。

}

}

return Order;

}

private int GetIByName(string name)//获得i的数值

{

switch (name)

{

case "A":

i=0;

break;

case "B":

i=1;

break;

case "C":

i=2;

break;

case "D":

i=3;

break;

case "E":

i=4;

break;

}

return i;

}

private int GetJByLession(string lession)//获得j的数值

{

switch (lession)

{

case ".NET技术":

j=0;

break;

case "C#":

j=1;

break;

case "XML":

j=2;

break;

case "J2EE":

j=3;

break;

case "JSP":

j=4;

break;

}

return j;

}

//成绩数组

int[,] Score=new int[5,5]{{85,84,90,80,85},{90,76,78,85,78},{67,66,64,85,80},{90,78,65,78,80},{64,60,67,78,80}};

double[] average=new double[5]; //声明平均值数组

private double[] Average() //获得平均值

{

for(int a=0;a<=4;a++)

{

double sum=0;

for(int b=0;b<=4;b++)

{

sum+=Score[a,b];

}

average[a]=sum/5;

}

return average;

}

}

}

**************************************

运行后发现前两个功能很容易就实现了,但就是排名怎么也做不出来,到底错在哪里呢?是算法的问题吧?我知道自己用了一个效率较低的冒泡法,但好像也不是错在这,而且自认为利用副本的这个获得排名的算法很出色,那到底是什么原因呢?

在反复试验了几次之后,只好利用单步调试来看看错在哪里了。

呵呵~~各位看官你猜怎么着?

...

...

...

...

...

...

副本EveryOne竟然随着average一同冒泡了,嘿嘿,原来如此啊,将程序:

EveryOne[i]=average[i]; //生成该生平均成绩的副本

改写为:

for(int i=0;i<=4;i++)

{

EveryOne[i]=average[i]; //生成该生平均成绩的副本

}

在运行,好的,一切OK!

大家可一定要了解好引用与COPY的区别,千万不要犯这样的错误,基础很重要啊!:)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有