JAVA流程控制
Scanner类
package Scanner;
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//NextLine 以回车为结束符
//Next 以空格为结束符
//hasNextFloat() 判断输入是否为小数
//hasNextInt() 是否为整数
if (scanner.hasNext())
{
String str = scanner.nextLine();
String str = scanner.next();
System.out.println("输出内容为:"+str);
}
//凡是属于IO流的类 如果不关闭会一直占用资源.
scanner.close();
}
}
实例1:输入多个整数,求总和与平均数,以字符结束输入并输出
package Scanner;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = 0;
int count = 0;
while (scanner.hasNextInt())
{
a = scanner.nextInt() + a;
count ++ ;
}
System.out.println("总数:" + a);
System.out.println("平均数:" + a/count);
scanner.close();
}
}
顺序结构
选择结构(if,switch,嵌套的if结构)
循环(for,do…while, while)
实例2:打印99乘法表
package Scanner;
public class Demo4 {
public static void main(String[] args) {
for (int j =1; j<=9;j++)
{
for (int i = 1; i<=j;i++)
{
System.out.print(j + "*" + i + "=" + (i*j) + "\t");//不换行print
}
System.out.println();//换行println
}
}
}
实例3:增强的for循环
package Scanner;
public class Demo5 {
public static void main(String[] args) {
int []a = {10,2,3,45,5};
// 正常的for循环
for (int i = 0;i<a.length;i++)
{
System.out.println(a[i]);
}
//增强for循环
for(int x :a)
{
System.out.println(x);
}
}
}
break和continue
- break终止循环
- continue 终止某一次循环
java方法
java方法包含方法头和方法体
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法实际传给方法的数据。
修饰符 返回值类型 方法名(参数类型 参数名)
{
....
方法体
....
return 返回值
}
// int a,int b , a,b就是形参
// add(c,d) c,d 为实参
public static int add(int a,int b)
{
int c = a+b;
return c
}
方法调用
对象.方法名
Scanner scanner = new Scanner(System.in); 声明一个Scanner对象
scanner.nextInt() // 调用nextint()方法
方法重载
方法名一样,参数类型不同或数量或参数排列顺序不同, 返回值可以相同。
方法重写
子类对父类方法的重写。
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
b.bark();
}
}
命令行传参
1.创建Demo类
2.javac Demo6.java
3.java Scanner.Demo6 + 参数
可变参数(不定项参数)
在方法声明中,在指定参数类型后加一个省略号(一个方法中可变参数必须是最后一个参数,一个方法只能有一个可变参数)
package Scanner;
public class Demo7 {
public static void main(String[] args) {
Demo7.test(1,2,3,4,5,6,7,5);
}
public static void test(int... a)
{
for (int x:a)
{
System.out.println(x);
}
}
}
输出结果:12345675
值传递和引用传递
基本类型作为参数被传递时肯定是值传递;引用类型作为参数被传递时也是值传递,只不过“值”为对应的引用。(JAVA都是值传递)
递归
递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
递归体:什么时候需要调用自身方法。
package Scanner;
public class Demo8 {
public static void main(String[] args) {
System.out.println(f(5));
}
// 阶乘递归 (n>0适用) n小于0的死循环。
public static int f(int n)
{
if (n==1)
{
return 1;
}
else
{
return n*f(n-1);
}
}
}