人与程序交互的Scanner
我们可通过Scanner类来获取用户的输入
Scanner sc=new Scanner(System.in);
通过 Scanner 类的 next() 和 nextLine()方法获取输入的字符串;
在读取前一般需要使用 hasNext() 和 hasNextLine()判断是否还有输入的数据。
if (sc.hasNext()){//后面没有加==就默认为true //使用next接收数据 String str=sc.next(); //程序会一直等待用户输入完毕 System.out.println("输出的内容为:"+str); }
// 以回车为结束符
1、nextLine() 方法返回输入回车之前的所有字符;
2、可以获得空白。
// 以空格为结束符
1、一定要读取到有效字符后才可以结束输入;
2、对输入的有效字符之前遇到空白,next() 方法会自动将其去掉;
3、只有输入有效字符后才将其后面输入的空白作为分隔符或结束符;
4、next() 不能得到带有空格的字符串.
//输入数据 Scanner sc=new Scanner(System.in); //接收数据 String str=sc.nextLint(); //关闭 sc.close();
对于Scanner类的常用方法:
String nextLine() 接收控制台输入的一个字符串
int nextInt() 接收控制台输入的一个int型数据
double nextDouble() 接收控制台输入的一个double型数据
note : 对于char类型输入的数据 Scanner 类没有提供直接输入char类型的方法,可通过 chatAt() 方法从 next() 或者nextLine () 获取输入的字符
/*next().charAt(0) 从控制台输入的字符串中获取第一个字符 */ /*"SHKO".charAt(1) 输出结果为H */
语法
if(布尔表达式){ //布尔表达式为true时执行 }else{ //布尔表达式为flase时执行 } //多选择结构 //只执行其中一个 if(布尔表达式1){ //布尔表达式1为true时执行 }else if(布尔表达式2){ //布尔表达式2为true时执行 }else if(布尔表达式3){ //布尔表达式3为true时执行 }else{ //以上都不满足 }
/* if语句至多有1个else语句; if语句可以有若干个else if ,它们必须在else语句之前 */
switch case 语句判断一个变量与一系列值中某个值是否相等,每一个值称为一个分支.
switch(expression){ case value1: //语句1 case value2: //语句2 break; ````````//可以有任意数量的case语句 default: //语句n+1 } /*格式说明: 表达式:取值为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String。 case:后面跟的是要和表达式进行比较的值。 break:表示中断,结束的意思,用来结束switch语句。 default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。 执行流程: 首先计算表达式的值。 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束掉。 */
char grade='A'; switch(grade){ case 'A': //执行 System.out.println("优秀"); case'B': System.out.println("良好"); break; default: System.out.println("未知等级"); } /*控制台输出的是: 优秀 良好 但我们发现 A 对应的应该是优秀,这是因为我们的break在case'B', 它会把break之前的全部输出(我们称为case穿透) =====这时我们应该在每个case后都加上break */
打开图示:
点开“我的电脑”,导航栏粘贴地址,找到对应demo的class文件复制 ,在IDEA中找到需要反编译的demo ,鼠标右键,打开所在文件夹下(show in Explorer)将前面所复制的class文件粘贴到该文件夹下,此时在IDEA中会生成一个新的demo,打开即可查看。
while(布尔表达式){ //语句体 }
只要布尔表达式 为true,循环就会一直下去造成死循环,我们应尽量避免;
我们大多需要一个让表达式失效的方式来结束循环,少部分情况需要一直循环,比如服务器的请求响应监听等;
//1+2+ ……+100 public static void main(String[] args) { //1+……+100 int i=0; int sum=0; while (i<=100) { sum = sum + i; i++; } System.out.println(sum);//5050
对于while来说不满足条件则不能进入循环,do……while循环至少执行一次;
//初始化表达式 // 1 do{ //语句体1 // 3 //语句体2 // 4 }while(布尔表达式); // 2 //执行顺序为 134>234>234……2不满足条件为止
是最有效、最灵活的循环结构
for(初始化变量;布尔表达式;变量更新){ //语句体 }
/* 最先执行初始化步骤,可以声明一种类型,可以初始化一个或多个循环控制变量,也可以是空语句; */
在IDEA中使用快捷键 例如:100.for加回车可自动生成
//1——100能被5整除的数,且每行输出3个 public static void main(String[] args) { for (int i = 5; i <=100; i++) { if (i%5==0){ System.out.print(i+"\t"); } if (i%(5*3)==0){ System.out.print("\n"); //System.out.println(""); } } } /* print是不换行输出 println 是换行输出 */
//九九乘法表 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+"="+(j*i)+"\t"); } System.out.println();//换行 } } /* 嵌套循环 总共的循环次数=外循环次数*内循环次数 */
for和while的区别:
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到
了,⽽while循环结束还可以继 续使⽤,如果你想继续使⽤,就⽤while,
否则推荐使⽤for。原因是for循环结束,该变量就从内存中消 失,能够提
⾼内存的使⽤效率。
在已知循环次数的时候使⽤推荐使⽤for,循环次数未知的时推荐使⽤
while。
public static void main(String[] args) { int[] numbers={10,20,30,40,50}; //遍历数组元素 for (int x:numbers){ System.out.print(x+" "); } /*相当于 for (int i = 0; i < 5; i++) { System.out.print(numbers[i]+" "); } */ }
break在任何循环语句的主体部分,均可使用break,强制退出循环,并不是结束程序;
continue在循环语句体中,用于终止某次循环过程,即跳过循环语句中未执行的语句,接着进行下一次是否执行循环的判定;(结束本次循环,继续下次循环)
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(); } }