输入的总结
Java的输入和C的输入有所不同,它有着花里胡哨的输入类型
要输入字符串/整数/浮点数最好的方法是用到Scanner
首先导入util包
import java.util.Scanner;
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
sc.close(); // 注意, 要记得调用关闭方法
在最开始写上Scanner (随便什么)=new Scanner(System.in);
之后要用什么类型就(随便什么).next(类型)
使用 Scanner 循环读取 N 个数字
import java.util.Scanner;
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double sum=0.0;
int count=0;
while(scanner.hasNextDouble()){
double tmp=scanner.nextDouble();
System.out.println(tmp);
sum+=tmp;
count++;
}
System.out.println("sum="+sum);
System.out.println(count);
}
这样这个程序段输出结果是什么呢?
可以看到我利用ctrl+D来结束一直的输入, 当循环输入多个数据的时候, 使用 ctrl + d 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl +
d).
字符串的输入
字符串的输入有两种方法
String str1=scanner.next();//遇到空格就退出来了
String str2=scanner.nextLine();//可以读到空格,但要尽量放在最上面
区别我已经写在代码片上了,字符串的输入还是跟C有很大区别的
方法:
所谓方法就是函数,它能让一段代码重复多次使用,减少工程量
// 方法定义
public static 方法返回值 方法名称([参数类型 形参 …]){
方法体代码;
[return 返回值];
}
// 方法调用
返回值变量 = 方法名称(实参…);
实参和形参
对于基础类型(int,char等八个)来说, 形参相当于实参的拷贝. 即传值调用,他们在函数里面的改变不会影响到原实参
而引用类型(String,数组,类,接口,枚举,抽象类)形参的改变也会影响到实参,即传址调用
方法的调用
Java方法调用就跟函数调用一样,值得注意的是Java没有指针类型,Java的调用需要在栈上开辟栈帧,调用完后栈帧的值就被系统回收了。
方法的重载
同一个方法名字, 提供不同版本的实现, 称为方法重载
对于重载来说需要:
1.方法名相同
2.方法的参数不同(参数个数或者参数类型)
3.方法的返回值类型不影响重载
class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = add(a, b);
System.out.println("ret = " + ret);
}
public static int add(int x, int y) {
return x + y;
}
public static double add(int x, int y) {
return x + y;
}
}
比如这样一串代码中add方法就能够实现整型和double型的加法操作
方法的递归(重点)
递归的两个必要条件:
1.存在限制条件,当满足这个限制条件的时候,递归便不再继续
2.每次递归调用之后越来越接近这个限制条件
递归也可以这样来理解,叫递过去,又归回来,什么意思呢?就是不断得把参数给递下去,最后又把返回值给一个一个归回来。比如很经典的一个递归调用题:按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)
public static void main(String[] args) {
int a=1234;
print(a);
}
public static void print(int a){
if(a>9)
print(a/10);
System.out.print(a%10+" ");
}
这个递归的限制条件就是a>9?如果是的,那么把a的值变成下一个递归中的数字。这里通过a/10一段段得访问到递归元素的过程就是递过去,而且它在不断得接近这个限制条件a<9。
当a<9时,if语句结束,输出a%10;print(a/10)语句结束,运行输出语句,不断得归回去,最后到最上面的递归,代码结束。
Java中的递归和C没什么两样,依旧要满足这两个条件,递归没有什么技巧,多练多写才行。