- java.util.Scanner是Java5的新特性,我们可以通过Scanner类来获取用户的输入
- 基本语法:
Scanner s = new Scanner(System.in);
- 可以通过Scanner类的next()与nextLine()方法获取用户输入的字符串,在读取前一般要使用hasNext()与hasNextLine()判断是否还有输入的数据
Scanner的用法:
import java.util.Scanner;//导入Scanner类 public class Demo{ public static void main(String[] args){ Scanner s1 = new Scanner(System.in);//将Scanner对象实例化(创建Scanner对象(s1)) int num = s1.nextInt();//调用Scanner的nextInt()方法,从控制台获取int类型的数 s1.close();//用完记得关闭 } }
- 读取前一般要使用hasNext()与hasNextLine()判断是否还有输入的数据,这个的实现就是下面的
使用hasNext()与hasNextLine()判断是否还有输入的数据
import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner s1 = new Scanner(System.in); int i = 0; System.out.println("请输入一个int类型的数据"); if(s1.hasNextInt()){ i= s1.nextInt(); }else{ System.out .println("你要输入int类型数据"); } System.out.println(i); s1.close(); } }
Scanner的进阶用法
import java.util.Scanner; public class Demo{ public static void main(String[] args){ Scanner s1 = new Scanner(System.in); while(s1.hasNextDouble()){ Double num = s1.nextDouble(); } s1.close(); } }
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个一次执行的处理步骤组成的,他是任何一个算法都离不开的一种基本算法结构。
- 语句结构:
if(布尔表达式2){ 语句或语句块; //当布尔表达式1是true时,走这里 }
为了便于理解,直接上图:
if(布尔表达式2){ 语句或语句块; //当布尔表达式1是true时,走这里 }else if(布尔表达式2){ 语句或语句块; //当布尔表达式2是true时,走这里 }else{ 语句或语句块; //当都不满足时,走这里 }
还是为了便于理解,直接上图:
- 语句结构:
switch(变量名){ case 常量1: 语句或语句块; break case 常量2: 语句或语句块; break; }
还是一样,直接上图理解:
- 语句结构:
while(布尔表达式){ 语句或语句块; }
继续上图:
- 语句结构
do{ 语句或语句块; }while(布尔表达式);
不说了,上图:
- 语句结构:
for(初始化表达式;布尔表达式;更改表达式){ 语句或语句块; }
不废话,上图:
增强for循环不需要用到下标
for(数组类型 变量名:数组或集合对象){ //语句或语句块 }
public class TestBreak{ public static void main(String [] args){ for(int i = 0;a<=100;a++){ if(i==50){ break; } System.out.println(i); } } }
然后输出结果是这样的:
1 2 3 4 ······· 48 49 然后····就没有然后了,因为到这里i==50这个条件满足,进入if语句,执行break,这个for循环已经被终止了。
public class TestBreak{ public static void main(String [] args){ for(int i = 0;i<=100;i++){ if(i==50){ break; System.out.println(a); //此条语句永远都不会被执行 } } System.out.println("Hello!") //当然这一条语句会被执行,因为break终止的只是它所在的循环,而不是整个程序 } }
不相信???自己去试!!!
public class TestContinue{ public static void main(String [] args){ for(int i = 0;a<=100;a++){ if(i==50){ continue; } System.out.println(i); } } }
然后输出结果是这样的:
1 2 3 4 ······· 48 49 51 //这里满足了i==50的条件,进入if语句,执行continue跳过了此次循环。 52 ······· 99 100
——和break的注意事项一样
public class Test{ public static void main(String [] args){ for(int i = 0;i<=100;i++){ if(i==50){ continue; System.out.println(a); //此条语句永远都不会被执行 } } System.out.println("Hello!") //当然这一条语句也是会被执行. } }
- goto关键字很早以前就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到正式的使用:Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子···带标签的break和continue。
- 标签只后面跟一个冒号的标识符,例如:label:
- 对Java来说唯一用到标签的地方就是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前的循环,但若随标签使用,他们就会中断到存在标签的地方。
——标签的名字是可以随便取的,但是要遵守命名规范。
public class TestBreak{ public static void main(String [] args){ label1:for(int a = 0;a<=100;a++){ System.out.println(a); label2:for(int b =0;b<=100;b++){ for(int c = 0;c<=100;c++){ System.out.println(c); break label1; //它会直接从自身所处的循环一直中断知道中断了带有所属标签的循环 } } } } }
break用于退出循环
continue用于跳过本次循环
不懂???没关系——上图(本人画的草图)↓↓↓
public class Demo { public static void main(String[] args){ for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j+"X"+i+"="+(j*i)+"\t"); } System.out.println(); } } }