一、For循环
两个小例子:
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
//练习:打印输出0-100之间的奇数和偶数的和
int oddSum = 0;//奇数和
int evenSum = 0;//偶数和
for (int i = 0;i <= 100;i++){
if(i % 2 == 0){
evenSum += i;
}else {
oddSum += i;
}
}
System.out.println("奇数和:" + oddSum);//结果为2500
System.out.println("偶数和:" + evenSum);//结果为2550
}
}
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
//练习用while或者for循环输出1-1000之间能被5整除的数字,每行输出三个
for (int i = 0;i <= 1000;i++){
if(i % 5 == 0){
System.out.println(i + "\t");
}
if(i % (5*3) == 0){
System.out.print("\n");
System.out.println();
}
}
}
}
知识点:
print:输出完会换行
println:输出完不会换行
打印九九乘法表
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
for(int i = 1;i <= 9;i++){
for(int j = 1;j <= i;j++){
System.out.print(j + "*" +i+ "=" +(j*i) + "\t");//print打印完换行
}
System.out.println();
}
}
}
增强For循环:
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};//定义了一个数组
//遍历数组的元素(简化写法)
for(int x:numbers){
System.out.println(x);
}
//相当于下面的这种写法:
for(int i = 0;i < 5;i++){
System.out.println(numbers[i]);
}
}
}
break语句、continue语句
break用于强行退出循环,不执行循环中剩下的语句,continue用于种终止某次循环过程,跳出循环体中尚未执行的语句,接着进行下一次是否循环
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
int i = 0;
while(i < 100){
i++;
if(i % 10 == 0){
System.out.println();
continue;
}
System.out.println(i);//除了能被10整除的都进行输出了
}
}
}
打印三角形和Debug
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
//打印三角形 5行
for(int i = 1;i <= 5;i++){
for(int j = 5;j >= i;j--){
System.out.print(" ");
}
for (int j = 1;j <= i;j++){
System.out.print("*");
}
for(int j = 1;j < i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
关于Debug:
- 先点击代码行左边的空白地区,出现一个小红点
- 再点击这个小爬虫
- 最后出现这个页面,图示为下一步,来进行分析
二、方法
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或者对象中
- 方法在程序中被创建,在其他地方被引用
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
//int sum = add(1, 2);
//System.out.println(sum); //输出结果为3
test();
}
//加法运算
public static int add(int a,int b){//类变量
return a + b;
}
public static void test(){
for (int i = 0;i <= 1000;i++){
if(i % 5 == 0){
System.out.println(i + "\t");
}
if(i % (5*3) == 0){
System.out.print("\n");
System.out.println();
}
}
}
}
再举个例子:
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
int max = max(10, 20);
System.out.println(max);
}
public static int max(int a,int b){
int result = 0;
if(a == b){
System.out.println("a = b");
return 0;
}
if(a > b){
result = a;
}else {
result = b;
}
return result;
}
}
方法的重载
意思就是在一个类中,有相同的函数名称但是形参不同,举个例子:
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
double max = max(10.0, 20.0);
System.out.println(max);
}
public static double max(double a,double b){
double result = 0;
if(a == b){
System.out.println("a = b");
return 0;
}
if(a > b){
result = a;
}else {
result = b;
}
return result;
}
public static int max(int a,int b){//两个方法名字都是max,真正执行的方法取决于你定义的数据类型:int和double
int result = 0;
if(a == b){
System.out.println("a = b");
return 0;
}
if(a > b){
result = a;
}else {
result = b;
}
return result;
}
}
方法重载的规则:
- 方法名必须相同、参数列表必须不同(个数不同、或类型不同、参数排列顺序不同)
- 返回值类型可相同可不同
可变参数(不知道要传多少参数)
- 在方法声明中,指定参数类型之后加一个省略号…
- 一个方法只能指定一个可变参数,而且他必须是方法的最后一个参数,任何普通参数都必须在他之前声明
public class Demo07 {
public static void main(String[] args) {
printMax(2,54,78,42,1);//输出为78.0
printMax(new double[]{1,2,3});//定义了一个double类型的数组,输出为3.0
}
public static void printMax(double...numbers){
if (numbers.length == 0){
System.out.println("No argument passed");
return;
}
double result = numbers[0];
//排序
for (int i = 1;i < numbers.length;i++){
if (numbers[i] > result){
result = numbers[i];
}
}
System.out.println("The max value is" + result);
}
}
递归
包括两部分:第一:递归头,什么时候不调用自身,第二:递归体,什么时候需要调用自身方法
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
System.out.println(f(5));//输出结果为120,5*4*3*2*1 = 120
}
public static int f(int n){
if(n == 1){
return 1;
}else {
return n * f(n-1);
}
}
}
小作业:写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现
思路推荐:
- 先写四个方法实现加减乘除功能
- 利用循环+switch进行用户交互
- 传递需要操作的两个数
- 输出结果
package com.liyan;
import java.util.Scanner;
public class Demo07 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个数:");
int a = scanner.nextInt();//nextInt():接收用户输入的数字并赋给a
System.out.print("请输入运算符:");
String b = scanner.next();//next():接收用户输入的字符串并赋给b
System.out.print("请输入第二个数:");
int c = scanner.nextInt();//nextInt():接收用户输入的数字并赋c
int result = 0;
if (c == 0) {
System.out.println("输入错误!请重新输入!");
} else {
switch (b) {
case "+":
result = add(a, c);
break;
case "-":
result = reduce(a, c);
break;
case "*":
result = mul(a, c);
break;
case "/":
result = div(a, c);
break;
default:
System.out.println("输入错误!");
}
System.out.println(a + b + c + "=" + result);
}
scanner.close();
}
public static int add(int num1,int num2){
return num1 + num2;
}
public static int reduce(int num1,int num2){
return num1 - num2;
}
public static int mul(int num1,int num2){
return num1 * num2;
}
public static int div(double num1,double num2){
if(num2 == 0){
System.out.println("输入错误,分母不为0");
}else {
return (int) (num1 / num2);
}
return 0;
}
}
上周总结:最近几天因为过年的缘故,导致网课没有跟上看,代码也非常不熟练,像switch语句和scanner语句,基本上都忘干净了,现找的资料写的计算机的这个题目,而且还不算很完善有些地方还需要改一下。马上过完年了,抓紧时间多看看网课多敲敲代码