-
之前我们学的基本语法中我们并没有实现程序和人的交互,但是java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是java5的新特性,我们可以通过Scanner类来获取用户多的输入。
-
基本语法:
Scaner s=new Scanner(System.in);
-
通过Scanner类的 next()与 nextLine()方法获取用户的字符串,读取前一般用hasNext()与hasNextLine()判断是否还有输入的数据。
//创建一个扫描器对象 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收"); //判断用户有没有输入字符串 if(scanner.hasNext()){ //使用hasNextLie()会接收一行 "hello word" //使用next方式接收 String str = scanner.next(); System.out.println("输入的内容为:"+str); //input: hello word //输入的内容为:hello } //凡是属于IO流的类如果不关闭会一直占用资源 scanner.close();
next()(不常用)
-
一定要读取到有效字符才可以结束输入
-
对输入有效字符之前遇到的空白,next()方法会将其去掉
-
只有输入有效字符后才将其后面输入的空白作为结束符
-
next()不能得到带有空格的字符串
nextLine()(常用)
-
以Enter作为结束符,即返回输入回车之前所有的字符
-
nextLine()可以获取空白
//从键盘接收数据 Scanner scanner = new Scanner(System.in); System.out.println("使用nextLine方式接受:"); //判断有没有下一行,也就是说判断是否还有输入。 if(scanner.hasNextLine()){ String str = scanner.nextLine();//等待用户去输入,直到输入数据敲下回车之后把你输入的数据变成变量保存在str字符串里 System.out.println("输入的内容为:"+str); } scanner.close();
System.out.println("请输入整数:"); //scanner.hasNextFloat()判断输入是否为小数 //scanner.hasNextInt()判断输入是否为整数 //scanner.hasNextByte()判断输入是否为字节 if(scanner.hasNextInt()){ i=scanner.nextInt(); System.out.println("输入的整数为:"+i); } else { System.out.println("输入的不是整数数据"); }
-
package base; import java.util.Scanner; public class Demo08 { public static void main(String[] args) { //我们可以输入多个数字,并求其总数和与平均值,每输入一个数字用回车确定,通过输入非数字来结束输入并输出执行结果。 Scanner scanner= new Scanner(System.in); double sum =0; int m =0; //循环语句:判断输入的内容是否为Double类型 while(scanner.hasNextDouble()){ // double x =scanner.nextDouble(); m =m+1;//m++ sum=sum+x; } System.out.println("输入的数字个数是:"+m); System.out.println(m+"个数字的总和是:"+sum); System.out.println(m+"个数字的平均数是:"+(sum/m)); scanner.close(); } }顺序结构
-
Java的基本结构就是顺序结构,除非特别指明,否则就按语句一条一条执行。
-
顺序结构是最简单的算法结构。
-
语句语句之间是按从上到下执行的,它是由若干个依次执行的处理步骤组成的,它是任何一种算法都离不开的一种基本算法结构。
-
if单选择结构 if( 布尔表达式){}
-
if双选择结构 if( ){ }else{ }
-
if多选择结构 if( ){ }else if{ }else{}
-
嵌套的if结构 if( ){ if( ) }
-
switch多选择结构
if双选择结构 if( ){ }else{ }
package base; import java.util.Scanner; public class Demo09 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入内容:"); String s = scanner.nextLine(); //equals:判断字符串是否相等。 if (s.equals("hello")) { System.out.println("s"); } else { System.out.println("End"); } scanner.close(); } }
if多选择结构 if( ){ }else if{ }else{}
嵌套的if结构 if( ){ if( ) }
int a = 80; if(a>60){ System.out.println("及格"); if(a>80){ System.out.println("且优秀"); } }else if(a>0){ System.out.println("不及格"); }else { System.out.println("缺考"); }
switch多选择结构
char grade = 'C'; //JDK新特性 可以是字符串(字符本质还是数字) //匹配一个具体的值 switch (grade){ case 'A': System.out.println("优秀"); break; //可选,跳出当前结构 case 'B': System.out.println("良好"); break; case 'C': System.out.println("合格"); break; default: //默认,以上值没匹配到 System.out.println("不及格"); break; }
switch语句中的变量类型可以是:
-
byte,short,int或者char
-
从javaSE 7开始 switch支持字符串String类型了
-
while循环
//计算1+2+3+...+100 int i=0; int sum=0; while(i<100){ i++; sum+=i; } System.out.println(sum); //5050
-
do…while循环
//先执行后判断,至少执行一次 do{ i++; sum+=i; }while(i<100) //跟上面效果一样
-
for循环
for循环是最有效最灵活的循环结构
for(初始化;布尔表达式;迭代){
//代码语句
}
//(初始化;条件判断;迭代) for(int i=0;i<100;i++){ i++; sum+=i;//迭代 } for(; ; ){...} //死循环
//练习:输出1-1000能被5整除的数,每行输出3个 for (int i = 1; i <= 1000; i++) { if(i%5==0){ System.out.print(i+"t"); //print输出完不换行println输出会自动换行 } if(i%(3*5)==0){ System.out.println(); //System.out.print(n);//与System.out.println();效果相同 } }
//练习2:输出九九乘法表 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(); }
增强for循环
java5引入了一种主要用于数组或集合的增强型for循环
格式:
for(声明语句 : 表达式){
//代码句子
}
int [] numbers = {10,20,30,40,50}; //定义一个数组 for (int x:numbers){ System.out.println(x); //遍历数组的元素 10 20 30 40 50 } //相当于 for(int i=0;i<5;i++){ System.out.println(numbers[i]); }
-
break可用在任何循环的主体部分,由于强行退出循环,不执行循环中剩余的语句。也可以用在switch语句。
-
continue用于循环语句中,终止某次循环过程,跳过剩余未执行的语句,直接进行下一次是否执行循环的条件判断。
-
标签:后面跟一个冒号的标识符 label:
//打印等腰空心三角形 Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); //n为三角形高 for(int i=1;i<=n;i++){ for(int j=1;j<=2*n-1;j++){ if(i!=n){ //若不为最后一行 if(i+j==n+1) System.out.print("*"); //三角形左腰边 else if(i+j==n+2*i-1) System.out.print("*"); //三角形右腰边 else System.out.print(" "); } else if(j%2!=0){ //最后一行,底边 System.out.print("*"); }else { System.out.print(" "); } } System.out.println(); //换行 }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)