目录
Scanner对象
1、作用:通过 Scanner 类 来获取用户的输入
2、基本语法
Scanner s = new Scanner(System.in);
一、字符串
- 通过 Scanner 类 的 next() 与 nextLine() 方法来获取输入的字符串
注意:next() 不接受空格,nextLine() 接受空格
- 一般地,在读取前,使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据
hasNext() 与 hasNextLine() 并无太大差别
import java.util.Scanner.; //引入Scanner类
public class input01{
public static void main(String[] args){
// 创建一个扫描器对象,用于接受键盘输入
Scanner scanner = new Scanner(System.in);
System.out.println("使用 next 方法接收");
//判断用户有没有输入字符串
if(scanner.hasnext()){
// 使用 next 方法接收
String str = scanner.next(); //不接受空格
System.out.println("输出的内容为:" + str);
}
//凡是属于IO流的类,如果停止使用要及时关闭,防止占用资源
scanner.close();
}
}
import java.util.Scanner.; //引入Scanner类
public class input01{
public static void main(String[] args){
// 创建一个扫描器对象,用于接受键盘输入
Scanner scanner = new Scanner(System.in);
System.out.println("使用 nextLine 方法接收");
//判断用户有没有输入字符串
if(scanner.hasNextLine()){
// 使用 next 方法接收
String str = scanner.nextLine(); //接受空格
System.out.println("输出的内容为:" + str);
}
//凡是属于IO流的类,如果停止使用要及时关闭,防止占用资源
scanner.close();
}
}
二、数字
1、单纯的输入输出
import java.util.Scanner;
public class demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 也可以进行初始化
int i;
float f;
System.out.println("请输入整数");
//判断输入的是否为整数
if(scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("您输入的整数是:" + i);
}
else
System.out.println("您输入的不是整数!");
System.out.println("请输入小数");
//判断输入的是否为float型
if(scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("您输入的小数是:" + f);
}
else
System.out.println("您输入的不是小数!");
scanner.close();
}
}
2、输入 + 简单的计算
import java.util.Scanner;
public class demo04 {
// 输入多个数据,计算其和 与 平均数,以非数字作为输入结束符
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum = 0; // 记录 和
int num = 0; // 记录 个数
System.out.println("请输入多个数字计算 和 与 平均值");
//当输入为非字符时,循环结束
while(scanner.hasNextDouble()) {
double x = scanner.nextDouble();
num++; //个数+1
sum = sum + x; //计算和
}
System.out.println("对于输入的数字,其和为:" + sum);
System.out.println("对于输入的数字,其平均值为:" + sum/num);
scanner.close();
}
}
顺序结构、选择结构、循环结构
一、顺序结构
一个个语句一次执行就是顺序结构
二、选择结构
1、if 选择结构
(1)if 单选择结构
if( 布尔表达式 ){
// 若布尔表达式的值为true则执行该语句体
}
(2)if 双选择结构
if( 布尔表达式 ){
// 若布尔表达式的值为true则执行该语句体,不执行下一个
}
else{
// 否则执行该语句体,而不执行上一个
}
(3)if 多选择结构
if( 布尔表达式1 ){
// 若布尔表达式1的值为true则执行该语句体
}
else if( 布尔表达式2 ){
// 若布尔表达式2的值为true则执行该语句体
}
··· ···
else{
// 上述表达式都为false 时执行该语句体
}
(3)if 嵌套结构
if( 布尔表达式1 ){
// 若布尔表达式1的值为true则执行该语句体
if( 布尔表达式2 ){
// 若布尔表达式2的值为true则执行该语句体
}
}
2、switch 多选择结构
- 格式
switch( 变量 ){
case 值1 :
// 语句
break; // 可选
case 值2 :
// 语句
break; // 可选
··· ···
default : // 可选
// 语句
}
注:
- 变量类型:byte、short、int、char
- 从JavaSE7开始,switch支持字符串String类型,同时case标签须为相应值
- case 存在 穿透现象:若变量与值m相等,则执行其下语句,知道遇见break为止
- 当变量与case给的所有值都不同时,才执行default
- 当变量为整型时,写例如 case 1 :
- 当变量为字符型时,写例如 case 'A' :
- 当变量为String时,写例如 case"Java" :
三、选择结构
1、while 循环结构
while( 布尔表达式 ){
// 表达式成立时执行
}
例题:计算1+2+···+100
public class demo01 {
public static void main(String[] args) {
int i = 1; //表示加数
int sum = 0; //表示和
while( i <= 100 ){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
2、do while循环
do{
// 语句
}while( 布尔表达式 )
注:do while先执行再判断
3、for循环
for( 初始化; 条件判断; 更新 ){
// 循环体
}
注:
- 初始化:可声明一种类型,也可给多个已声明的变量赋值,也可为空语句
- 条件判断:当满足条件时,执行循环;否则,循环终止
- 更新:每执行完一次循环体之后,更新循环控制变量
例题:计算0-100之间的奇数和、偶数和
public class demo02 {
public static void main(String[] args) {
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i < 100; i++) {
if(i%2 == 0) { //判断是否为偶数
evenSum = evenSum + i;
}
else{
oddSum = oddSum + i;
}
}
System.out.println("0-100的奇数和为:" + oddSum);
System.out.println("0-100的偶数和为:" + evenSum);
}
}
例题:for循环输出1-1000之间能被5整除的数,并且每行输出3个数
public class demo03 {
public static void main(String[] args) {
for (int i = 1; i <= 1000; i++) {
if(i%5 == 0) { // 能被5整除
System.out.print(i+"\t");
}
if(i%(5*3) == 0) //控制一行内输出3个数
System.out.println();
}
}
}
例题:打印九九乘法表
public class demo04 {
//打印九九乘法表
public static void main(String[] args) {
for(int i = 1; i <= 9; i++){ // 控制行数
for(int j = 1; j <= i; j++){ // 控制列数
System.out.print(j + "*" + i + "=" + i*j + '\t');
}
System.out.println();
}
}
}
例题:打印5行三角形
public class demo06 {
// 打印5行三角形(以5*10的长方形为背景)
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for(int j = 5; j >= i; j--) { //部分1,打印空格
System.out.print("");
}
for(int j = 1; j <= i; j++) { //部分2,打印*
System.out.print("*");
}
for(int j = 1; j < i; j++) { //部分3,打印*
System.out.print("*");
}
System.out.println();
}
}
}
4、增强for循环
int[] num = {10, 20, 30, 40, 50}; //定义了一个数组
// 便利数组的元素
for(int i:num)
System.out.println(i);
5、break 和 continue
(1)break:强行退出循环,不执行循环中剩余语句
(2)continue:终止某次循环,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
(3)goto:实际上是带标签的循环体,continue利用标签跳入到制定循环体中(不建议使用)
public class demo05 {
// 打印101-150之间的所有质数
public static void main(String[] args) {
outer:for(int i = 101; i <= 150; i++){
for(int j = 2; j < i/2; j++){
if( i % j == 0 )
continue outer;
}
System.out.print(i+" ");
}
}
}