Java初级笔记-第三章

本文介绍了Java编程的基础知识,包括流程图的概念及其组成,程序设计的三种基本结构:顺序、选择和循环。此外,详细讲解了程序注释的重要性,包括单行和多行注释以及Java特有的文档注释。还深入探讨了Java命令行下的输入输出,如Scanner类的使用。最后,文章讨论了分支控制语句,包括if...else、switch语句,以及循环控制语句如for、while和do...while。
摘要由CSDN通过智能技术生成

第三章 程序设计基础
3.1 流程图
3.1.1 什么是流程图:
流程图是通过箭头(流程线)相互连接的几何图形来表达程序运行的方法。
流程图是算法的一种图形化描述,比较直观的表达了一件事务的处理过程。相对于代码来讲容易理解。
3.1.2 流程图的组成:

画流程图的方法是:从左到右、从上到下。根据问题的需要,确定解决问题的先后处理顺序以及前提条件,将流程线将各图形符号连接起来,直观的表达自己的逻辑思想或问题的处理方法,最终达到预期的结果。
注意事项:
一个流程图只能有一个开始框,开始框作为处理问题的开始,根据解决问题的需要,其他描述框可以有多个。对于判断框,必须提供一个进口流程线和两个出口流程线。出口线必须在流程线上标明判断结果为真或假(YES或NO);如果只标明一个条件,则另一条流程线则是相反条件。
3.1.3程序控制的三种结构
从程序执行流程可分成下列三种典型结构:
顺序结构:程序是按程序语句或模块在执行流中的先后顺序逐个执行。
选择结构:也叫分支结构,程序是按设定的条件实现程序执行流的多路分支。
循环结构:程序是按给定的条件重复地执行指定的程序段或模块。
结论:理论上已经证明,用三种基本程序结构可以实现任何复杂的算法。

3.1.4 基本流程图的表达示例

3.1.5 例题

3.2 程序注释
3.2.1 程序注释
程序注释主要是为了程序的易读性。对一个程序语句,一个程序段,一个程序它的作用是什么,必要时都应该用注释简要说明。
程序中的注释不是程序的语句部分,它可以放在程序的任何地方,系统在编译时忽略它们。
以“//”开始后跟注释文字。这种注释方式可单独占一行,也可放在程序语句的后边。
例如,在下边的程序片段中使用注释:

单行注释:(//后的一行均为注释)
//下面定义程序中所使用的量
int id ; //定义一整型变量id ,表示识别号码。
String name; //定义一字符串变量name,表示名字。
多行注释:(以“/﹡”开始,以“﹡/”结束)
当需要多行注释时,一般使用“/﹡……﹡/”格式作注释,中间为注释内容。

/﹡
* 本程序是一个示例程序,在程序中定义了如下两个方法:
* setName(String ) ---设置名字方法
* getName () --- 获取名字方法。
﹡/
public void setName(String name)
{
   ……….
}
public String getName()
{
  return name;
}

………

3.2.2 文档注释
程序文档注释是Java特有的注释方式,它规定了一些专门的标记,其目的是用于自动生成独立的程序文档。
程序文档注释通常用于注释类、接口、变量和方法。下面看一个注释类的例子:
/**
* 该类包含了一些操作数据库常用的基本方法,诸如:在库中建立新的数据表、
* 在数据表中插入新记录、删除无用的记录、修改已存在的记录中的数据、查询
* 相关的数据信息等功能。
* @author unascribed
* @version 1.50, 02/02/06
* @since JDK2.0
*/
在上边的程序文档注释中,除了说明文字之外,还有一些@字符开始的专门的标记,说明如下:
@author 用于说明本程序代码的作者;
@version 用于说明程序代码的版本及推出时间;
@since 用于说明开发程序代码的软件环境。
3.3 Java命令提示符下的输入输出
3.3.1 输入
字符界面下的输入输出是由Java的基类System提供的,在前边的示例中,我们已经使用了System.out.println()方法在屏幕上输出信息。下边看一下输入输出方法的一般格式。
1. 输入方法
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象。
Scanner reader = new Scanner(System.in);
然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型: next.Byte(),nextShort(),nextInt(),nextLong(),nextFloat,nextDouble(),next(),nextLine()。
nextByte()得到输入的字节;
nextShort()得到输入的短整型
nextInt() 得到输入的整型。
nextLong() 得到输入的长整型
nextFloat() 得到输入的单精度浮点
nextDouble() 得到输入的双精度浮点数
next() 得到输入的字符串,必须有字符
nextLine() 得到输入的字符串,包括
上述方法执行时都会造成堵塞,等待用户在命令行输入数据,回车确认。

例如,用户在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false。
nextLine()等待用户输入一个文本行并且回车。该方法得到一个String类型的数据。

其它输入方法:
格式: System.in.read();
功能:该方法的功能是从键盘上接受一个字符,按照byte类型的数据处理。若将它转换为字符型,它就是字符本身;若转换为整型,它是扩展字符的ASCII码值(0~255)。
格式: System.in.read(byte []a);
功能:该方法返回一组字节数据,并保存在字节数据a中。

  1. 输出方法
    格式1: System.out.print(表达式);
    格式2: System.out.println(表达式);
    格式3: System.out.printf(表达式);
    功能:在屏幕上输出表达式的值。

Scanner 的使用

/**
* 本程序利用Scanner 让用户输入一些数字,然后计算用户输入数据的和与平均值。
* 源程序名ExampleScanner.java
*/
import java.util.*;
public class ExampleScanner{
   
public static void main(String args[]){
System.out.println("请输入若干个数,每输入一个数用回车确认");
System.out.println("最后输入一个非数字结束输入操作");
Scanner reader=new Scanner(System.in);
double sum=0;
int m=0;
while(reader.hasNextDouble()){
double x=reader.nextDouble();
m=m+1;
sum=sum+x;
}
System.out.printf("%d个数的和为%f\n",m,sum);
System.out.printf("%d个数的平均值是%f\n",m,sum/m);
}
}

System.in.read

/* 示例3.1 程序名:IoExam3_1.java
* 这是一个字符界面输入输出的简单示例。
 * 它主要演示从键盘上输入一个字符,然
 * 后以字节方式、字符方式在屏幕上输出。
 */
 class IoExam3_1
 {
    public static void main(String [] args)
    {
        int num1=0;
        try
        {
          System.out.print("请输入一个字符:");
          num1=System.in.read();  //从键盘上输入一个字符并把它赋给num1
        }
        catch(Exception e1) {
        }
        System.out.println("以数值方式显示,是输入字符的ASCII值= "+num1);
        System.out.println("以字符方式显示,显示的是字符本身   = "+(char)num1);
    }
 }

3.3.2 输出

/**
* 测试System.out.print&println
*/
import java.util.*;
public class Print {
   
    public static void main(String[] args) {
        System.out.println("打印一行,以下只打印一个空行");
        System.out.println();
        System.out.print("只打印不换行,");
        System.out.println("呵呵");
        System.out.print("用转义字符换行\n");

    }
}

本程序输出
打印一行,以下只打印一个空行

只打印不换行,呵呵
用转义字符换行

如果输出的字符串中使用一些比较特殊的字符,比如换行(Enter)、退格(Backspace)、制表(Tab),可以通过在字符串序列中加入转义字符来完成这类功能。
Java语言支持一些特殊的转义字符序列。
符号 字符含义
\n 换行 (0x0a)
\r 回车 (0x0d)
\f 换页符(0x0c)
\b 退格 (0x08)
\s 空格 (0x20)
\t 制表符
\” 双引号
\’ 单引号
\ 反斜杠
\ddd 八进制字符 (ddd)
\uxxxx 16进制Unicode字符 (xxxx)

对于不确定宽度的输出,Java可以使用格式化字符(占位符)来完成,每个转换符对应一个要输出的变量,结果是输出变量的值。
转换符 说明 示例
%s 字符串类型 “Microsoft”
%c 字符类型 ‘m’
%b 布尔类型 True
%d 整数类型(十进制) 99
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 1.23
%a 浮点类型(十六进制) ff.35ae
%e 浮点类型(指数,科学计数法) 1.2e-5
%g 通用浮点(f和e中较短的)
%h 散列码
%% 百分比符号 %
%n 换行
%tx 日期与时间类型(x代表不同的日期与时间转换符)

示例:

public class Print {
    public static void main(String[] args) {
        int i=1,j=10;
        double x=1.134567890,y=3.145;
        System.out.printf("格式化输出字符串:\t%d 0x%08X\n",i,j); 
        System.out.printf("浮点格式化:\t\t%f %.4g %4.2f",x,x,y);// 4.2中的4代表数位宽度占用4个字符,小数点后占2位,其它的类推,无小数点不要使用。
    }
}

本程序输出:
格式化输出字符串: 1 0x0000000A
浮点格式化: 1.134568 1.135 3.15
3.3 分支控制语句
Java程序通过一些控制结构的语句来执行程序流,完成一定的任务。程序流是由若干个语句组成的,语句可以是单一的一条语句,如c = a + b; 也可以是用大括号“{}”括起来的一个复合语句即语句块。
Java语句包含一系列的流程控制语句,这些控制语句表达了一定的逻辑关系,所以可选择性的或者是可重复性的执行某些代码行,这些语句与其他编程语言中使用的流程控制语句大体相近,Java的流程控制语句基本上是仿照C/C++中的语句。每一个流程控制语句实际上是个代码块,块的开始和结束都是用大括号来进行表示的,其中“{”表示开始,“}”表示结束。在本节先介绍分支控制语句。
3.3.1 if条件分支语句
若布尔表达式(关系表达式或逻辑表达式)产生true (真)值,则执行该语句,否则跳过或执行下面的语句。
格式1 if
if (布尔表达式) 语句;

示例

import java.util.*;
public class If {
    public static void main(String[] args) {
        float  x = 45.2145f;

        // 一条语句也要进行块分割
        /*
        if(x<0) {
            x = -x;
        }
        */
        if(x<0);// 这种错误真的不要犯呀!!!!!
        x = -x;
        System.out.println("x=" + x);   }
}

格式2 if … else …

if (布尔表达式) 语句1;
else 语句2;
语句3

示例:

import java.util.*;

public class IfElse {
    public static void main(String[] args) {
        int score = 40;
        boolean b = score >= 60;// 布尔型变量b是false
        if (b)
            System.out.println("你通过了测试");
        else
            System.out.println("你没有通过测试");
    }
}

格式3:if… else if … else…
if (布尔表达式1) 语句1;
else if (布尔表达式2) 语句2;
……
else if (布尔表达式n-1) 语句n-1;
else 语句n;

语句

示例:

/**
 * 为考试成绩划定五个级别,当成绩大于或等于90分时,划定为优;
 * 当成绩大于或等于80且小于90时,划定为良;
 * 当成绩大于或等于70且小于80时,划定为中;
 * 当成绩大于或等于60且小于70时,划定为及格;
 * 当成绩小于60时,划定为差。
 */
/* 这是一个划定成绩级别的简单程序
 * 它主要演示多者择一分支语句的应用。
 */
public class IfElseIf {
   
    public static void main(String[] args) {
        int score = 79;// 成绩
        if (score >= 90) {
            System.out.println("成绩为优=" + score);
        }
        else if (score >= 80){
            System.out.println("成绩为良=" + score);
        }
        else if (score >= 70){
            System.out.println("成绩为中=" + score);
        }
        else 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李砖砖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值