Day4---学习Java第二弹

2021-07-14

eg1:写一个程序,列出斐波那契数列,小于50

 1 class Fibonacci {
 2 /*print out the Fibonacci sequence for values < 50 */
 3 public static void main (String [] args){
 4   int lo =1;
 5   int hi =1;
 6 
 7   System.out.println(lo);
 8  while (hi <50){
 9  System.out.println(hi);
10 hi = lo +hi;  //new hi
11  lo= hi -lo;   //new lo is (sum -old lo)
12 }
13 }
14 }

斐波那契数列:1,1,2,3,5,8,13,21……

这个例子声明了一个Fibonacci类,并且拥有一个main方法。main的前两行定义了两个局部变量:lo和hi,在这里面,hi是数列的当前项,lo是前一项。

根据流程里面,先定义了前两项为1和1,然后先输出前一项lo=1,下面接着利用while函数,前面标明数列当前项是小于50,控制数列数量。

第一步输出hi=1的当前项,然后走流程hi=lo+hi;当然接着lo不可能一成不变,也需要往下走,lo=hi-lo;这就相当于lo等于这一项的hi。

根据这个流程依次输出,即可得到斐波那契数列。

 

 while 所测试的表达式是一个具有true或者false的布尔表达式

系统标准输出System.out。 out 实际上是System类的一个属性。这个属性还有一个println()的方法,想屏幕输出括号里的内容,并且在内容后加上回车。

系统标准输入是System.in。方法read()接受用户输入的字符,它的返回值的int行数据。

 

 eg2:从键盘输入一个浮点数,然后将该浮点数的整数部分输出

class fudianshu{
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        float f ;
        f = reader.nextFloat();
        System.out.println((int)f);
    }
}

 

 

输入浮点型的数据,记为f

f = reader.nextFloat();

Java中next()的用法:

首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,

只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。

完整标记的前后是与分隔模式匹配的输入信息。

Java中nextLine()与其他next(),nextInt(),nextFloat()的区别

nextInt()读取结果为int类型

nextFloat()读取结果为float类型

next()读取结果为String类型

next Line()读取结果为String类型

next(),nextInt(),nextFloat()看到空格符或回车符都认为读取结束,此时不会读取回车符。

nextLine()只以回车符为结束,并且会读取回车符。

 

 下面来个example

public void logIn(){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入ID:");
        int id = input.nextInt();
        System.out.println("请输入密码:");
        String pass = input.nextLine();
    }

 

这里输入ID之后,按回车键,系统弹出"请输入密码:"后并没有等待控制台输入,而是直接结束了程序。

原因就是当我们输入完ID并且按下回车之后,nextInt()方法只会读取‘123’,而不会读取回车;因此回车符会被留在此处。

当执行到nextLine()方法时,nextLine()方法会读取回车,并且以回车符为结束,因此该方法会在我们输入之前就读取到了上次我们输入的回车符,

于是该方法就认为已经执行完毕,所以我们没有输入的机会。

可以都使用nextLine()方法来读取输入,然后再进行接收数据的类型转换,

 

eg3:从键盘输入两个整数,计算他们相除的结果并输出

class zhengshuxiangchu {
    public static void main(String[] args) {
        int a;
        int b;
        float c;
        Scanner reader = new Scanner(System.in);
        System.out.println("请输入第一个数字");
        a = reader.nextInt();
        System.out.println("请输入第二个数字");
        b = reader.nextInt();
        c = (float)a/b;
        System.out.println("结果是:"+c);
 
    }
}

 

 

定义两个变量,分别用于存储学生的语文成绩和数学成绩,通过程序将这两个变量的值进行交换,输出变量之前的值和交换后变量中的值。

添加断点,观察变量值的交换过程

  1. import java.util.Scanner;
    public class chengjijiaohuan {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner cj = new Scanner(System.in);
            System.out.println("请输入数学成绩");
            int SxChengji = cj.nextInt();
            System.out.println("请输入语文成绩");
            int YwChengji = cj.nextInt();
            System.out.println("交换前的数学分数是:"+SxChengji+"语文成绩是:"+YwChengji);
            YwChengji = SxChengji+YwChengji;
            SxChengji = YwChengji - SxChengji;
            YwChengji = YwChengji - SxChengji;
            System.out.println("交换后的数学分数是:"+SxChengji+"语文成绩是:"+YwChengji);
    
        }
    
    }

  2. 添加程序断点,以Debug模式运行程序。点击右上角“Debug”视图按钮,进入 Debug 视图。

  3. 点击单步执行按钮,让程序执行完 13行代码,进入 14行代码
  4. 再次观察变量视图,查看数学成绩取值以及交换变量取值

  5. 观察数学成绩取值和交换变量的取值已经一样。让程序执行完14行代码,进入 15行代码。

  6. 再次观察变量视图,查看数学成绩取值。

  7. 通过观察,可以发现此时数学成绩已经由原来的80分被修改为90分,语文成绩和数学成绩已经相同,点击单步执行,让程序执行完第 15行代码

  8. 此时准备执行第 16行代码,再次观察变量视图

  9. 通过观察,此时语文成绩变量与数学成绩变量已经完成值的交换。

     

     

  10.                                                                                                                                                                                                                  ----------------------------------------------------------------------------------------------------------------------

逻辑运算符中的逻辑与和简洁与的区别是什么?

简洁运算符可能只需要计算左边的表达式而不用计算右边的表达式,而逻辑运算符必须计算完左右两个表达式才行。

 

逻辑运算符和位运算符的区别是什么?

逻辑运算符的操作数都是Boolean的数据,位运算符的操作数只能是整型或者字符型数据

 

 Scanner cannot be resolved to a type报错情况

解决方法

Scanner类。使用前需要将其导入。

也就是说在代码的最前端加入

import java.util.Scanner;

明天继续学习

posted @ 2021-07-14 21:50  zrswheart  阅读(75)  评论(0编辑  收藏  举报