黑马程序员 自学13C#编程基础之返回值
2014-04-15 23:17
267 查看
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
方法中被调用者想访问调用者的变量用传参的方法:
方法名();
{
Test(a);
……
}
Public static void Test (int a)
{
a=a+1;
……
}
方法中,调用者想访问被调用者中的变量时,可以用返回值返回。
为何方法前面能够定义一个变量接收方法的值?
eg:
string s=Console.ReadLine();
int i=Convert.ToInt32(“22”);
是因为在方法中使用了返回值。
只要在方法中返回了值,那么在调用方法中,前面就应该用一个变量来接收方法的返回值。
注意:一个方法只能有一个返回值(参数可以有多个,返回值只能有一个)。
要修改返回值类型:
eg:void→返回值类型”string”
public static string Test()
一旦方法有返回值,那么在这个方法体中就必须通过return语句返回一个值,并且这个值要与返回值类型是相同的。
调用者中:
{
string s=Test();
}
被调用者中:
public static string Test ()
{
return (string);
}
结果一半不在(被调用者)方法中写,因为方法只尽其责,不是为了出结果。
Return可以多次出现在程序中,配合if使用。
当形参是数组的时候,我们传数组名:
……Main()
{
Int[]aaa={…………};
Test(aaa)//→传一个数组的话,调用者这里参数写该数组的方法名。
}
……Sum(int[]number)//这里则定义一个数组来接收
{……}
当传输的是数组中的元素时:
……Main()
{
Int[]aaa={……};
Test(aaa[0],aaa[1]);
}
……Sum(int a,int b)
{……}
每趟每数比较次数 < ××.Length-1-躺数 n++
temp=n-1;
n-1 = n;
n =temp;
2. 封装(Console.WriteLine(“”);→向控制台输出)
注意:
1. 方法一般要定义在类中;
2. 若方法没有返回值,则返回值类型写void;
3. 若方法没有参数,则()不能省略。
调用:类名 . 方法名() ;
Int . Test ();
在类中调用本类的方法,可以只写方法名:
Class Program
……
……Main()
{
ShowUI();//Program ShowUI();
Class1.MyTest();//这个是在其他类中的方法
}
……ShowUI()
{……}
变量的作用域:
在方法内定义的变量为局部变量,从定义开始到定义的大括号结束为止。
调用者→被调用者之间是用参数传输(Test(a);Test(int a);)
被调用者→调用者之间可用返回值传输的 return
这些传输的值均一一对应。
若不传参,却要使用其他方法中变量的值:
一个变量一旦定义在方法外,类的里面,则叫做类的字段,这个变量就可以被本类的所有方法所访问。
注意:静态方法只能访问静态字段。
Static int a = 10 ; 可以让静态方法访问字段。
如下文有:public static boid Test(int a)
{
a = a+1;//这里的a则是传参的值(就近原则)
}
静态方法只能访问静态字段,非静态方法都能访问。
Static 不能声明常量,常量也不能声明static
方法不管是否静态,都可以访问常量。
由const修饰的常量不能定义为静态的。
Windows屏蔽了地址(用变量屏蔽)
Int i(接收返回值)=Convert.ToInt32(“22”)(参数);
三元表达式 max=a>b?(T):(F);
要养成对方法文档注释的好习惯。
思考:
既然Console.WriteLine()是方法,那么为什么WriteLine的参数可以是字符串类型也可以是数字类型,还可以是bool char……类型?
为什么要有方法的重载?
Change:转换
练习二:
练习三:
练习四:
练习五:
练习六:
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
返回值
2014/4/4方法中被调用者想访问调用者的变量用传参的方法:
方法名();
{
Test(a);
……
}
Public static void Test (int a)
{
a=a+1;
……
}
方法中,调用者想访问被调用者中的变量时,可以用返回值返回。
为何方法前面能够定义一个变量接收方法的值?
eg:
string s=Console.ReadLine();
int i=Convert.ToInt32(“22”);
是因为在方法中使用了返回值。
只要在方法中返回了值,那么在调用方法中,前面就应该用一个变量来接收方法的返回值。
注意:一个方法只能有一个返回值(参数可以有多个,返回值只能有一个)。
要修改返回值类型:
eg:void→返回值类型”string”
public static string Test()
一旦方法有返回值,那么在这个方法体中就必须通过return语句返回一个值,并且这个值要与返回值类型是相同的。
语法:
return + 值;调用者中:
{
string s=Test();
}
被调用者中:
public static string Test ()
{
return (string);
}
结果一半不在(被调用者)方法中写,因为方法只尽其责,不是为了出结果。
Return可以多次出现在程序中,配合if使用。
当形参是数组的时候,我们传数组名:
……Main()
{
Int[]aaa={…………};
Test(aaa)//→传一个数组的话,调用者这里参数写该数组的方法名。
}
……Sum(int[]number)//这里则定义一个数组来接收
{……}
当传输的是数组中的元素时:
……Main()
{
Int[]aaa={……};
Test(aaa[0],aaa[1]);
}
……Sum(int a,int b)
{……}
复习
2014/4/5数组:
可以帮我们解决一组/N多个相同类型的变量。冒泡排序:(最基本)
趟数 < ××.Length-1 i++每趟每数比较次数 < ××.Length-1-躺数 n++
temp=n-1;
n-1 = n;
n =temp;
(静态)方法:
1. 用来复用代码,小功能块=方法;2. 封装(Console.WriteLine(“”);→向控制台输出)
注意:
1. 方法一般要定义在类中;
2. 若方法没有返回值,则返回值类型写void;
3. 若方法没有参数,则()不能省略。
调用:类名 . 方法名() ;
Int . Test ();
在类中调用本类的方法,可以只写方法名:
Class Program
……
……Main()
{
ShowUI();//Program ShowUI();
Class1.MyTest();//这个是在其他类中的方法
}
……ShowUI()
{……}
Return
立即退出本方法变量的作用域:
在方法内定义的变量为局部变量,从定义开始到定义的大括号结束为止。
调用者→被调用者之间是用参数传输(Test(a);Test(int a);)
被调用者→调用者之间可用返回值传输的 return
这些传输的值均一一对应。
若不传参,却要使用其他方法中变量的值:
一个变量一旦定义在方法外,类的里面,则叫做类的字段,这个变量就可以被本类的所有方法所访问。
注意:静态方法只能访问静态字段。
Static int a = 10 ; 可以让静态方法访问字段。
如下文有:public static boid Test(int a)
{
a = a+1;//这里的a则是传参的值(就近原则)
}
静态方法只能访问静态字段,非静态方法都能访问。
Static 不能声明常量,常量也不能声明static
方法不管是否静态,都可以访问常量。
由const修饰的常量不能定义为静态的。
Windows屏蔽了地址(用变量屏蔽)
Int i(接收返回值)=Convert.ToInt32(“22”)(参数);
三元表达式 max=a>b?(T):(F);
要养成对方法文档注释的好习惯。
思考:
既然Console.WriteLine()是方法,那么为什么WriteLine的参数可以是字符串类型也可以是数字类型,还可以是bool char……类型?
为什么要有方法的重载?
词汇小结:
Accept:接受Change:转换
练习:
练习一:#region 年份计算 Console.WriteLine("请输入要计算的年份:"); Console.Write("年份:"); bool answer = Count();//传给方法year,接收count方法对闰年的判断结果,是bool类型 if (answer == true) Console.WriteLine("你输入的年份是闰年"); else Console.WriteLine("你输入的年份不是闰年"); Console.ReadKey(); } public static bool Count() { int year; bool flag = false; do {//do-while 循环 try {//try-catch用来判断用户是否输入int以外其他的字符串 year = int.Parse(Console.ReadLine());//int XX=int.Parse(string) if (year < 0)//这个条件用来判断用户输入的年份是否有效 Console.WriteLine("请输入正确的年份"); else break; } catch { Console.WriteLine("请输入正确的年份!"); } } while (true); if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) flag = true; return flag; #endregion
练习二:
#region 方法判断用户输入数字 Console.WriteLine("请输入一个整数"); Console.Write("整数:"); Judge(); Console.ReadKey(); } public static void Judge(/*int number*/) { do { try { int number = int.Parse(Console.ReadLine()); break; } catch { Console.WriteLine("请输入正确的数字"); Console.Write("整数:"); } } while (true);
练习三:
#region 让用户只输入y/n Console.WriteLine("请输入y/n"); Console.Write("y/n:"); Judge(); Console.ReadKey(); } public static void Judge() { do { try {//防止用户输入两个以上的字符串 char input = char.Parse(Console.ReadLine()); if (input == 'y' || input == 'n')//防止用户输入的不是y/n break; else { Console.WriteLine("请输入y/n"); Console.Write("y/n:"); } } catch { Console.WriteLine("请输入y/n"); Console.Write("y/n:"); } } while (true); #endregion
练习四:
#region 输入两个数 Console.WriteLine("请输入两个整数"); int max = Max(); Console.WriteLine("刚刚输入的两个数中最大数为:" + max); Console.ReadKey(); } /// <summary> /// 下面这个方法是用来输入两个数字比较最大值的,而且只能输入数字。 /// </summary> /// <returns></returns> public static int Max(/*int number*/) { int max; do { try { Console.Write("整数1:"); int number1 = int.Parse(Console.ReadLine()); Console.Write("整数2:"); int number2 = int.Parse(Console.ReadLine()); max = number1 > number2 ? number1 : number2;//三元表达式 break; } catch { Console.WriteLine("请输入正确的数字"); } } while (true); return max; #endregion
练习五:
#region 数组的和 Console.WriteLine("请输入十个数计算它们的和"); int sum = Sum();//int[]aaa={1,2,3,} int sum=Sum(aaa) Console.WriteLine("和为:" + sum); Console.ReadKey(); } public static int Sum()//Sum(int[] number) { int sum = 0; int[] number = new int[10]; for (int i = 0; i < number.Length; i++) { Console.Write("第{0}个数:", i + 1); try//这个得写在for内部,不光是简便,写在外部如果某个数出错了,则全部需要重新输入。 { number[i] = int.Parse(Console.ReadLine()); sum += number[i]; } catch { Console.WriteLine("请输入正确的数字"); i--;//这个必须要有,(因为在for循环内,下一步就是i++)不然第二个数字出错进入这里之后下一步会显示第三个数字: } } return sum; #endregion
练习六:
#region 循环输入两个数 static void Main(string[] args) { Console.WriteLine("请输入两个整数,如果想要结束比较则输入over"); do { string max = Max(); if (max == "输入错误") Console.Clear(); else if(max=="over") { Console.WriteLine("程序结束"); break; } else Console.WriteLine("刚刚输入的两个数中最大数为:" + max); } while (true); Console.ReadKey(); } public static string Max(/*int number*/) { string max = "0";//之所以为string类型是为了用户输入其他字符之后可以让max是输入错误而不是数字从而产生bug。 int numberA,numberB; string number1, number2; try { Console.Write("整数1:"); number1 =Console.ReadLine(); Console.Write("整数2:"); number2 =Console.ReadLine(); if (number1 == "over" || number2 == "over")//只能输入两次后再结束,不然后面没办法判断。此程序弊端之一! { max="over";//如果不写这个,Max方法会报错“并非所有代码路径都返回值” //break;这个break是不用再写的,因为一旦开始返回数值,就相当于break。 } else { numberA = int.Parse(number1);//转换成int类型,如果这步出错则证明用户输入了其他字符。 numberB = int.Parse(number2); int max1=int.Parse(max); if (numberB < numberA) max1 = numberA; else max1 = numberB; max = Convert.ToString(max1);//换回string,因为要返回的是一个string的值。 return max; } } catch { max="输入错误"; Console.WriteLine("请输入正确的数字"); Console.ReadKey(); } return max; #endregion
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
相关文章推荐
- java架构师之路:JAVA程序员必看的15本书的电子版下载地址
- Mysql,我为了面试准备的
- 面试经典(10)--归并排序
- 黑马程序员-继承性、多态性
- 网上调侃程序员的段子
- 轻松搞定面试中的二叉树题目
- ENFP喜欢的职业
- ENFP喜欢的职业
- ENFP喜欢的职业
- 2015阿里巴巴数据分析师实习生招聘面试经验
- 黑马程序员_java基础知识总结(3)集合框架
- 黑马程序员_java高新之泛型
- 《面试题精选》10.给一个有序数组和一个数s,求数组中两数和等于s的组合
- 软件行业的职业发展概要
- 面试1
- 黑马程序员_java基础知识总结(2)递归用法总结
- 轻松搞定面试中的链表题目
- 黑马程序员_java高新之反射
- 黑马程序员 Java基础 面向对象:内部类 异常 包 jar包
- 黑马程序员-面向对象