前言
知行合一:知道做不到等于不知道
1.方法中的练习:
1.1求两数之和
/*
求两数之和
*/
public class Add {
public static void main(String[] args) {
int x = 10;
int y = 20;
int z = add(x,y);
System.out.println(z);
}
public static int add(int x, int y){
return x+y;
}
}
注意:类的写法和psvm的写法
1.2键盘录入两个数据,返回两个数中的较大值
/*
键盘录入两个数据,返回两个数中的较大值
*/
package cn.plsite.day04.demo01;
import java.util.Scanner;
public class Compare {
public static void main(String[] arg){
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数字");
int num1 = sc.nextInt();
System.out.println("请输入第二个数字");
int num2 = sc.nextInt();
comparsion(num1,num2);
}
public static void comparsion(int x, int y){
//普通方式
// if(x == y){
// System.out.println(x+"等于"+y);
// }else if(x > y){
// System.out.println(x+"大");
// }else{
// System.out.println(y+"大");
// }
//三元改进
if(x == y){
System.out.println(x+"等于"+y);
}else {
int z = (x > y) ? x : y;
System.out.println(z +"大");
}
}
}
标准答案:
import java.util.Scanner;
class FunctionTest {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
int result = getMax(a,b);
System.out.println("较大值是:"+result);
}
/*
需求:两个q数中的较大值
两个明确:
返回值类型:int
参数列表:int a,int b
*/
public static int getMax(int a,int b) {
//if语句
/*
if(a > b) {
//System.out.println(a);
return a;
}else {
//System.out.println(b);
return b;
}
*/
//用三元改进
//int c = ((a > b)? a: b);
//return c;
//由于c就是后面的式子
return ((a>b)? a : b);
}
}
注意:
1.类的首字母大写,使用的System类及Scanner类首字母都要大写;
2.Scanner类使用:生成Scanner对象-》new Scanner(System.in);
3.使用Scanner成员方法:nextInt()获取键盘数据数字
4.三元运算后不能接语句,即(a>b)? 语句a : 语句b是错误的
5.三元运算前面的比较有括号,不要忘了
1.3键盘录入三个数据,返回三个数中的最大值
手写版:
/*
键盘录入三个数据,返回三个数中的最大值
*/
import java.util.Scanner;
public class CompareThreeNum {
public static void main(String[] arg){
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个数:");
int a = sc.nextInt();
System.out.println("输入第二个数:");
int b = sc.nextInt();
System.out.println("输入第三个数:");
int c = sc.nextInt();
System.out.println("最大值是:"+compare(a,b,c));
}
//比较三个数中最大的数,并返回
public static int compare(int a, int b, int c){
int max;
max = (a>b)?a:b;
max = (c>max)?c:max;
return max;
}
}
答案:
import java.util.Scanner;
class FunctionTest3 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
System.out.println("请输入第三个数据:");
int c = sc.nextInt();
int max = getMax(a,b,c);
System.out.println("三个数据中的最大值是:"+max);
}
/*
需求;返回三个数中的最大值
两个明确:
返回值类型:int
参数列表:int a,int b,int c
*/
public static int getMax(int a,int b,int c) {
//if嵌套
/*
if(a > b) {
if(a > c) {
return a;
}else {
return c;
}
}else {
if(b > c) {
return b;
}else {
return c;
}
}
*/
//用三元改
/*
if(a > b) {
return (a>c? a: c);
}else {
return (b>c? b: c);
}
*/
//继续改进
//return (a>b)? (a>c? a: c): (b>c? b: c);
//不建议,写代码一定要注意阅读性强
int temp = ((a>b)? a: b);
int max = ((temp>c)? temp: c);//注意这里比较的思想
return max;
}
}
1.4方法的调用void类型方法的定义和调用
手写
/*需求:在控制台输出如下的形状
*****
*****
*****
*****
*/
package cn.plsite.day04.demo01;
public class Rectangle {
//五乘四*输出,要求使用函数
public static void main(String[] args) {
rectangle(5,4);
}
public static void rectangle(int x,int y ){
for( int i = 0; i < y; i++) {
for (int j = 0; j < x; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
答案:
class FunctionDemo3 {
public static void main(String[] args) {
//for循环嵌套输出图形
for(int x=0; x<4; x++) {
for(int y=0; y<5; y++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------");
//需求:我要在控制台输出一个6行7列的星形图形
for(int x=0; x<6; x++) {
for(int y=0; y<7; y++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------");
//如果需要继续改变,我们就应该考虑使用方法改进。
//单独调用
pringXing(3,4);
System.out.println("--------------");
pringXing(6,7);
System.out.println("--------------");
pringXing(8,9);
//输出调用
//此处不允许使用 '空' 类型
//System.out.println(pringXing(3,4));
//赋值调用
//非法的表达式开始
//void v = pringXing(3,4);
}
/*
写一个什么样子的方法呢?写一个m行n列的代码
两个明确:
返回值类型:这个时候没有明确的返回值,不写东西还不行,所以,这里记住是void
参数列表:int m,int n
*/
public static void pringXing(int m,int n) {
for(int x=0; x<m; x++) {
for(int y=0; y<n; y++) {
System.out.print("*");
}
System.out.println();
}
}
}
注意:返回值是空(void)的函数不能使用复制调用和输出调用
1.5键盘录入一个数据n(1<=n<=9),输出对应的nn乘法表
首次写
/*
键盘录入一个数据n(1<=n<=9),输出对应的nn乘法表
*/
package cn.plsite.day04.demo01;
import java.util.Scanner;
public class MultiplicationTable {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个1-9数字");
int num = sc.nextInt();
if(num >= 1 && num <= 9){
mult(num);
}else {
System.out.println("超出范围");
}
}
public static void mult(int n){
for(int i = 1 ; i < n+1; i++){
for(int j = 1 ;j < n+1; j++){
System.out.print(i+"*"+j+"="+(i*j)+" ");
}
System.out.println();
}
}
}
答案:
import java.util.Scanner;
class FunctionTest5 {
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入n的值:(1~9)");
int n = sc.nextInt();
//调用
printNN(n);
}
/*
需求:输出对应的nn乘法表
两个明确:
返回值类型:void
参数列表:int n
*/
public static void printNN(int n) {
for(int x=1; x<=n; x++) {
for(int y=1; y<=x; y++) {
//这里只能一行一行打印,故:x做控制变化的(放在右边),y从1开始变化(放在左边)
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
重写:
package cn.plsite.day04.demo01;
import java.util.Scanner;
public class MultiplicationTable {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个1-9数字");
int num = sc.nextInt();
if(num >= 1 && num <= 9){
mult(num);
}else {
System.out.println("超出范围");
}
}
public static void mult(int n){
for(int i = 1 ; i <= n; i++){
for(int j = 1 ;j <= i; j++){
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
}
}
注意:1、循环变量的范围
2、\t运用可以使打印更整齐
3、第二层循环应该是避免重复相乘,二层循环变量小于一层。
1.6方法重载练习比较数据是否相等
自己写的:
/*
比较两个数据是否相等。参数类型分别为
两个byte类型,两个short类型,两个int类型,两个long类型,
并在main方法中进行测试
*/
package cn.plsite.day04.demo01;
/*
比较两个数据是否相等。参数类型分别为
两个byte类型,两个short类型,两个int类型,两个long类型,
并在main方法中进行测试
*/
public class OverMethod {
public static void main(String[] args) {
System.out.println(isEqual(2,3));
System.out.println(isEqual(101,1011111111));
}
public static boolean isEqual(byte x,byte y){
return x == y;
}
public static boolean isEqual(int x,int y){
return x == y;
}
public static boolean isEqual(long x,long y){
return x == y;
}
}
答案:
class FunctionTest6 {
public static void main(String[] args) {
//测试
byte b1 = 3;
byte b2 = 4;
System.out.println("byte:"+compare(b1,b2));
//测试
short s1 = 5;
short s2 = 5;
System.out.println("short:"+compare(s1,s2));
//后面的两个自己测试
}
//byte类型
public static boolean compare(byte a,byte b) {
System.out.println("byte");
return a == b;
}
//short类型
public static boolean compare(short a,short b) {
System.out.println("short");
return a == b;
}
//int类型
public static boolean compare(int a,int b) {
System.out.println("int");
return a == b;
}
//long类型
public static boolean compare(long a,long b) {
System.out.println("long");
return a == b;
}
}
注意:
1.在测试时候应该注意区分
2.每个类型变量应该分开定义