JAVA的基本程序设计结构(五)

一、输入与输出

现代的程序都使用GUI收集用户的输入,然而,编写这种界面的程序需要使用较多的工具与技术,目前还不具备这些条件。我们的第一要务是熟悉Java程序设计语言,因此我们要使用基本的控制台来实现输入输出。

  1. 读取输入
    前面小节已经看到,将输出打印到“标准输出流”(即控制台窗口)是一件非常容易的事情,只要调用System.out.println即可。然而,读取“标准输入流”System.in 就没有那么简单了。要想通过控制台进行输入,首先需要构造一个与“标准输入流”System,in关联的Scanner对象。
    Scanner in =new Scanner(System.in);
    现在,就可以使用Scanner类的各种方法读取输入了。
    例如,nextLine方法将读取一行输入。
    System.out.println(“what`s is your name?”);
    String name=in.nextLine();
    在这里,使用nextLine方法是因为在输入行中有可能包含空格。

    要想读取一个单词(以空白符作为分隔符),可以调用
    String firstName=in.next();
    要想读取一个整数,就调用nextInt方法。
    System.out.print(“How old are you?”);
    int age =in.nextInt();
    与此类推,要想读取下一个浮点数,就调用nextDouble方法。

    Scanner类定义在java.util包中。如在程序中导入:import java.util.*;
    当时使用的类不是定义在基本java.lang包中时,一定要使用import指令导入相应的包。

  2. 格式化输出
    可以使用语句System.out.print(x)将数值x输出到控制台。这条命令将以x的类型所允许的最大非0数位个数打印输出x。
    例如:
    double x=10000.0/3.0;
    System.out.print(x);
    打印:3333.3333333333335

在早期的Java版本中,格式化数值曾引起一些争议。Java 5沿用了C语言函数库中的printf方法。例如,调用
System.out.printf("%8.2f",x);
会以一个字段宽度打印x:包括8个字符,另外精度为小数点后2个字符。也就是说,这会打印一个前导的空格和7个字符,如下所示:
3333.33
可以为printf提供多个参数,例如:
System.out.printf(“Hello,%s.Next year,you`ll be %d”,name,age);
每一个%字符开始的格式说明符都用相应的参数替换。格式说明符尾部的转换符指示要格式化的数值的类型:f表示浮点数,s表示字符串,d表示十进制整数。
在这里插入图片描述
另外,还可以指定控制格式化输出外观的各种标志。
在这里插入图片描述

  1. 控制流程
    与任何程序设计语言一样,Java使用条件语句和循环语句确定控制流程。
    块作用域
    块(即复合语句)是指由若干条Java语句组成的语句,并用一对大括号括起来。块确定了变量的作用域。块可以嵌套在另一个块中。
    例如:
public static void main(String [ ] args){
		int n;
	{
		int k;
	}
}

但是,不能再嵌套的两个块中声明同名的变量。
例如,下面的代码就有错误,而无法通过编译:

public static void main(String []args)
{
	int n;
	{
	int k;
	int n;
	}
}

**注释:**再C++中,可以再嵌套的块中重定义一个变量。在内层定义的变量会覆盖在外层定义的变量。这就有可能带来编程错误,因此Java中不允许这样做。

3.1 条件语句
在Java中,条件语句的形式为
if(condition) statement
与绝大多数程序设计语言一样,Java常常希望在某个条件为真时执行多条语句。在这种情况下,就可以使用块语句,形式为
if(condition)
{
statement1
statement2
}
例如:

if(a>b)
{
	max=a;
	min=b;
}

在这里插入图片描述

在Java中,更一般的条件语句如下所示
if(condition) statement1 else statement2

例如:

if(a>b)
{
	temp=a;
}else{
	temp=b;
}

在这里插入图片描述
其中else部分总是可选的。else子句与最邻近的if构成一组。因此,在语句
if(x<=0) if (x= =0) sign=0; else sign=-1;
中else与第2个if配对。当然,使用大括号会让这段代码更加清晰:
if(x<=0) { if(x= =0) sign=0; else sign=-1;}
使用if…else if…很常见
例如:

if(a>b)
{
	max=a;
	min=b;
}else if(a=b){
	max=min=a;
}else{
	max=b;
	min=c;
}

在这里插入图片描述

3.2 循环
当条件为true时,while循环执行一条语句(也可以是一个块语句)。一般形式如下:
while(condition) statement
如果开始时循环条件的值就为false,那么while循环一次也不执行。
例如:

while(i<100)
{
	i++;
}

在这里插入图片描述
while循环语句在最前面检测循环条件。因此,循环体中的代码有可能一次都不执行。如果希望循环体至少执行一次,需要使用do/while循环将检测放在最后。它的语法如下:
do statement while(condition);
这种循环语句先执行语句(通常是一个语句块),然后再检测循环条件。如果为true,就重复执行语句,然后就再次检测循环条件,以此类推。
例如:

do
{
	i--;
}while(i>=0);

在这里插入图片描述
3.3 确定循环
for循环语句是支持迭代的一种通用结构,由一个计数器或类似的变量控制迭代次数,每次迭代后这个变量将会更新。
例如:下面的循环数字1~10输出到屏幕上。
for(int i=1;i<=10;i++)
System.out.println(i);
在这里插入图片描述
for语句的第1部分通常是对计数器的初始化;第2部分给出每次新一轮循环执行前检测的循环条件;第3部分指定如何更新计数器。
尽管Java允许再for循环的各个部分放置任何表达式,但有一条不成文的规则:for语句的3部分应该对同一个计数器变量进行初始化、检测和更新。若不遵守这一规则,编写的循环常常晦涩难懂。

3.4 多重选择:switch语句
在处理多个选项是时,使用if/else结构显得有些笨拙。Java有一个与C/C++完全一样的switch语句。
例如:

switch(count)
	{
		case 1:
			....
			break;
		case 2:
			....
			break;
		case 3:
			....
			break;
		case 4:
			....
			break;
		default:
			....
			break;
	}

switch语句将从与选项值相匹配的case标签开始执行,直到遇到break语句,或者执行到switch语句的结束处为止。如果没有相匹配的case标签,而有default子句,就执行这个子句。
警告:
有可能触发多个case分支。如果在case分支语句的末尾没有break语句,那么就会接着执行下一个case分支语句。这种情况相当危险,常常会引入错误。为此我们在程序中从不使用switch语句。
在这里插入图片描述
case标签可以是:

  • 类型为char、byte、short、或int的常量表达式。
  • 枚举常量
  • 从Java7开始,case标签还可以是字符串字面量。

3.5 中断控制流程语句
break语句:可以用于退出循环语句。
continue语句:越过当前循环体的剩余部分,立刻跳到循环首部。
例如:如果将continue语句用于for循环中,就可以跳到for循环的“更新”部分。

3.6 大数
如果基本的整数和浮点数精度不够满足需求,那么可以使用java.math包中两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现任意精度的整数运算,BigDecimal实现任意精度的浮点数运算。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清穷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值