首先:java的重点和难点,命名和缓存
这次咱们的内容主要用到:
命名规则:大小写字母,下划线,美元符号$,数字,且数字不能打头
变量的声明:数据类型划分内存空间,命名,赋值
方法的声明:修饰符列表,返回值,方法名,形参列表,方法体
示例:
1, 如果让你计算1~100的奇数和,偶数和,还有1~100的和;
2, 还有1~N的和
3, 九九乘法表
第一题,1~100的奇数和,偶数和,和
先用for循环写一个
for循环,for循环的运行规则,for(表达式1,表达式2,表达式3),先执行表达式1,并且只执行一次,表达式2进行判断,如果正确,就接着运行下面的程序,运行完成后,循环到表达式3,然后再判断表达式2,一直到表达式2判断错误,就会终止循环的运行
循环三要素:初始值(表达式1),终止条件(表达式2),步长(表达式3),表达式2必须为boolean类型
public class For_Ji_Ou{ //用public声明一个类,并且每个java文件中可以有多个public,但是只能有一个用public修饰的类,这个类的类名必须和文件名一致
public static void main(String[] args){ //main方法,可以说是所有程序都在main方法里执行的
int ji = 0; //用int数据类型,开辟个int长度大小的空间,并给这个空间起个名字叫ji,并给它赋值为0;
int ou = 0; //用int数据类型,开辟个int长度大小的空间,并给这个空间起个名字叫ou,并给它赋值为0;
int sum = 0; //用int数据类型,开辟个int长度大小的空间,并给这个空间起个名字叫sum,并给它赋值为0;
for(int i=0; i <=100 ; i+=2){ //for循环,初始值为0,终止条件为=100,步长为2
ou += i; // ou是咱们已经声明好的一个变量, 让ou += i 首先+=是吧左右两个 数值相加,再把相加的值赋值给左面,大家已经知道什么意思了吧,就是每次循环出来的i都和ou相加,
}
System.out.println( "1-100的偶数和为: "+ou ); //输出
for(int i=1; i <=100 ; i+=2){ //初始值为1
ji += i;
}
System.out.println( "1-100的奇数和为: "+ji );
for(int i=0; i <=100 ; ++i){ //初始值为1,步长也为1
sum += i;
}
System.out.println( "1-100的和为: "+sum );
}
}
用if写
if() { 如果判断正确,就执行下面语句
java语句
}else{ 否则就执行下面语句
java语句
}
public class If{
public static void main(String[] args){
int j = 0; //跟上面for循环一样一样
int o = 0;
for(int i=0; i <=100 ; ++i){ //初始值为0,步长为1
if (i % 2 == 1) { //这里我们是算余数,如果除2余数为1,那就肯定是奇数了 对不对 我让奇数 执行下面语句
j+=i; // 每次都和i相加 再把值赋值给j
}else{ // 余数不等于1 也就是偶数了 就执行下面语句
o+=i; // 每次都和i相加 再把值赋值给o
}
}
System.out.println( "1-100的奇数和"+j ); //输出
System.out.println( "1-100的偶数和"+o ); //输出
}
}
第二题 用递归写一个1~N的和
首先什么是递归函数,就是跟for一样,是循环,函数的循环,
什么是递归调用,就是函数自己调用自己
但是函数 不调用不执行,调用才执行,并且吧值返回到调用处
递归和循环都一样,有共同的三要素 : 初始值, 终止条件, 步长
public class Di_Gui{ //入口,public修饰的类
public static void main(String[] args){ //main方法
int s = 100; //int数据类型声明变量 s 并赋值为100
int q = a.m1(s); //int数据类型声明q 并赋值 赋的值是一个函数的调用,首先先把函数运算完了,才能赋值吧,赋值完成后,才能进行下一步指令吧 因为java的运行时从上到下,从左往右执行的
System.out.println( q ); //输出p
}
}
class a { //创建一个class类文件 为a
public static int m1(int n){ // 创建一个m1方法,并且用 static修饰,所以这个方法是静态方法,静态方法的调用 : 类名.方法名(); 如果在一个作用域就可以: 方法名();
if (n==1) { //如果n==1 就执行下面语句
return 1; //return 返回值, 返回值为1 就是如果运行到这一步,就把值赋值给m1,在终止整个函数
}else{ //n不等于1的时候,就执行下面语句
return n+m1(n-1); //这是重点 返回值里面是个函数,我想返回值,得先把函数运行出来吧,而且这个函数,我传的实参是n-1, 而不是n了 这样不管n是多少,早晚有n到1的时候
}
}
}
return n+m1(n-1); 运算大概顺序,看下面
/*
10+m1(9)+9+m1(8)+.....+m1(1)
假如上面s等于10的时候.是不是就等于m1(10);
m1(10);当m1(10)时,值为= 10+m1(9) 最后再看后面的 = 10+9+8+7+6+5+4+3+2+1; m1(9);当m1(9 )时,值为= 9 +m1(8) 最后再看后面的 = 9+8+7+6+5+4+3+2+1;
m1(8) 当m1(8 )时,值为= 8 +m1(7) 最后再看后面的 =8+7+6+5+4+3+2+1;
m1(7) 当m1(7 )时,值为= 7 +m1(6) 最后再看后面的 =7+6+5+4+3+2+1;
m1(6) 当m1(6 )时,值为= 6 +m1(5) 最后再看后面的 =6+5+4+3+2+1;
m1(5) 当m1(5 )时,值为= 5 +m1(4) 最后再看后面的 =5+4+3+2+1;
m1(4) 当m1(4 )时,值为= 4 +m1(3) 最后再看后面的 =4+3+2+1;
m1(3) 当m1(3 )时,值为= 3 +m1(2) 最后再看后面的 =3+2+1;
m1(2) 当m1(2 )时,值为= 2 +m1(1) 最后再看后面的 =2+1;
m1(1) 当m1(1 )时,值为= 1 (因为当n=1是,返回值return 返回的是1 所以这里终止函数的运行,并把1 返回给m1)
*/
第三题:九九乘法表
循环三要素 : 初始值, 终止条件, 步长
/*
使用嵌套的for循环打印九九乘法表
1*1=1
2*1=2 2*2=4
.......
9*1=9...............9*9=81
行数和最大格子数相等
*/
public class For_Cheng_Fa_Biao{ //public修饰的类,并且只能有一个,不用说了吧
public static void main(String[] args){ //main方法
for(int i=1; i <=9 ; ++i){ //循环, 记住,循环没循环一遍,都会把里面的值全部运行完,才算循环了一遍,所以我这嵌套循环,每次外面那个循环循环一次,里面那个循环都会循环完;
for(int j=1; j <= i ; ++j){ //终止条件,不能大于i
System.out.print( j + "*" + i + "=" + (i*j) + " " ); //输出,结果为j*i=(j*i) 字符串里面的东西是直接输出的,并且字符串和值的连接符是 +
}
System.out.println( ); //输出一个换行,不加的话,就会在一排过去,影响美观
}
}
}
行了 ,写完了,大家好好理解一下,递归函数那个返回值哪里,多理解一下,有哪里写的不好的,不对的,请多多指点一下
绅士ゝ图图.