大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
流程控制
用户交互Scanner类
-
实现程序和人的交互
-
java.util.Scanner
-
Scanner 类 获取用户的输入
- next() 获取下一个字符
- nextLine()获取下一行
next()
以检测到用户输入的空格为结束符,但是一定要读取到有效字符才可以结束,也就是刚开始遇到的空格就会抛弃,而中间遇到空格才会停止。
所以next()不能得到带有空格的字符串
hasNext()
用来检测是否还有下一个输入,返回布尔值
close()
用于使用完毕Scanner对象后,关闭输入流
package scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args){
//创建一个扫描对象
// 先new一个Scanner 参数为System.in :
// new Scanner(System.in); 按alt+enter 自动创建本地变量
Scanner scanner = new Scanner(System.in);
System.out.println("使用next()方法接收");
//输入hello world 只能接收到hello 因为中间有空格
//判断用户后面还有没有输入字符
if(scanner.hasNext()==true){
//使用next()方法接收
String str=scanner.next();//输入hello world
System.out.println("输入内容为"+str);//只能接受到hello
}
scanner.close();//用完scanner要关闭,节省资源
//凡是属于IO流的类要养成用完就关掉的习惯
}
}
####nextLine();
以检测到用户输入回车enter 为结束符,可以获得空格。
hasNextLine()
用来检测是否还有下一行输入,返回布尔值
package scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine()接受");
if(scanner.hasNextLine()==true){
String str=scanner.nextLine();//输入hello world
System.out.println("输出的内容为:"+str);//接收到hello world
}
scanner.close();
}
}
常规还是用nextLine(),并且一般不用判断是否后面还有数据,用一个字符串对象接收nextLine()获取的值
public class Demo03 {
public static void main(String[] args) {
//从键盘接受(可以不判断用户是否还有下一个输入)
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
String str = scanner.nextLine();
System.out.println("您输入的内容为:\n"+str);
scanner.close();
}
}
接受指定类型的数据——nextInt(),nextDouble()
package scanner;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
//新建一个扫描器对象
Scanner scanner=new Scanner(System.in);
int i=0;
float f=0.0f;//记住 float 类型要末尾加 f与 double区别
System.out.println("请输入整数:\n");
//接收一个整数,如果不是整数就不会接收
if(scanner.hasNextInt()){
i=scanner.nextInt();
System.out.println("整型数据"+i);
}
else{
System.out.println("你输入的不是整数");
}
//接收一个单精度浮点数,如果不是就不会接收
System.out.println("请输入小数:\n");
if(scanner.hasNextFloat()){
f=scanner.nextFloat();//如果此处输入了整数,会自动转换为浮点数
System.out.println("小数数据"+f);
}
else{
System.out.println("你输入的不是小数");
}
scanner.close();
}
}
一个小案例:
输入多个数据,计算总和,平均数。每输入一个数字用回车确认,输入非数字结束。
package scanner;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args){
System.out.println("请输入数据");
Scanner scanner = new Scanner(System.in);
//求和
double sum=0;
//计数
int m=0;
//通过循环判断是否还有输入,并对每一次输入进行求和统计
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;
sum=sum+x;//sum+=x
System.out.println("你已经输入"+m+"个数,当前和为:"+sum+",当前平均值为:"+sum/m);
}
System.out.println("你一共输入"+m+"个数");
System.out.println(m+"个数的和为"+sum);
System.out.println(m+"个数的平均数为"+sum/m);
scanner.close();
程序的结构
-
顺序结构
-
选择结构(分支结构)
-
if-else
-
if——else if——else if——else if——else
(else必须在 else if 之后)
-
-
switch-case
public class Demo06 {
public static void main(String[] args){
char grade='M';
switch(grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
default:
System.out.println("未知等级");
case 'D':
System.out.println("不及格");
break;
//switch的每种情况顺序是不影响的,程序会自动匹配;
//匹配不到时会选择default
//只有遇到break才退出,不然向下继续执行
//efault中没有break,程序也会继续向下执行
}
}
}
-
switch支持String字符串常量匹配——可以用“名字”作为匹配项
-
字符串的本质还是数字
-
switch后面的括号内只能用常量,不能是变量
反编译
IDEA自带反编译方法
.java——编译后——.class文件(字节码文件)——反编译(使用IDEA)——.java
具体方法如下
循环结构——功能:迭代
-
while 用于不知道循环次数,有时候也用于死循环——监听,检查
-
for 用于已知循环次数——最有效,最灵活
要注意程序执行顺序
for(初始化循环变量;条件判断;自增自减){循环体}
- 最先初始化(仅第一次)
- 然后条件判断
- 然后循环体
- 最后自增自减,然后下一轮条件判断
-
for(;;)三个参数可以分别没有,也可都没有——死循环
小练习 :
输出1-1000内能被5整除的数,每行仅输出3个
public class Demo08 {
public static void main(String[] args){
for (int i = 0; i < 100; i++) {
if(i%5==0){
System.out.print(i+"\t");
//每输出一个数隔开一个tab
}
if(i%5*3==0){
System.out.println();
//没输出三个数,输出一个换行
//也可以System.out.print("\n");
}
}
}
}
println和print的区别,前者会自动换行
小练习:
for循环打印九九乘法表
public class Demo09 {
public static void main(String[] args) {
//九九乘法表
for (int i = 1; i < 10; i++) {
for(int j= 1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j);
System.out.print("\t");
}
System.out.println();
}
}
}
增强for
-
用于遍历数组、对象
-
IDEA快捷键——对象.for
-
格式
for(临时变量类型 变量名 :需要遍历的数组或对象){循环体操作}public class Demo10 { public static void main(String[] args) { int[] numbers={ 10,20,30,4,50};//数组的定义 for(int x:numbers){ System.out.println(x); } } }
判断字符串是否与另一个字符串相等
(仅仅比较值是否相等,不能比较引用)
str.equals(“hello”)
break,continue
-
break——终止循环,退出
-
continue——不执行循环内continue后面的语句,跳过本轮循环,继续下一次循环
“goto关键字”在java中的影子
Java中本来没有goto 关键字——用标签来实现跳转,通过continue跳转到指定标签位置(仅作了解——不建议使用)
以下程序再最外层循环设置了标记outer,方便continue跳出
public class Demo11 {
public static void main(String[] args) {
outer: for(int i=1;i<20;i++){
for(int j=2;j<i/2;j++){
if(i%j==0){
//此处求质数的算法再理解一下 备注到下方
continue outer;
}
}
}
}
}
notes:
质数是大于1的自然数中,只能被1和本身整除的数
小练习:
打印如图所示三角形
- 思路:最外层循环控制换行,先打印左边空白倒着的半三角,再打印左边一半的 * 三角,最后打印右边一半的 * 三角。
public class Demo12 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >=i; j--) {
System.out.print(" ");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
快捷打开window绘图软件
(win+R——mspaint)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168488.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...