之前我们学习的基本语法并没有实现程序和人的交互,java给我们提供了一个工具类,可以获取用户的输入java.util.scanner是java5的新特征,我们通过Scanner来获取用户输入。
基本语法
Scanner s = new Scanner(system.in);
通过Scanner类的 next()与 nextLine()方法获取用户的字符串,读取之前一般用hasNext()与hasNextLine()判断是否还有输入的数据。
使用next方式接收一下输入的数据
//创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); //next方式接收字符串 System.out.println("Next方式接收:"); //判断用户不有没有输入字符 if(scanner.hasNext()){ string str = scanner.next(); System.out.println("输入内容:" + str); //input: hello word //输入的内容为:hello } //凡是属于IO流的类如果不关闭会一直占用资源 scanner.close();
//从键盘接收数据 Scanner scanner = new Scanner(System.in); System.out.println("请输入数据:"); String str = scanner.nextLine(); System.out.println("输入的内容为:"+str); scanner.close();
System.out.println("请输入整数:"); if(scanner.hasNextInt()){ //hasNextInt判断输入整数,还有hasNextDouble..... int i=scanner.nextInt(); System.out.println("输入的整数为:"+i); }else { System.out.println("输入的不是整数数据"); }
next():
nextLine():
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("缺考"); }
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; }
while(布尔表达式) { //循环内容 }
只要布尔表达式为true,循环就会一直执行下去。
//计算1+2+3+...+100 int i=0; int sum=0; while(i<100){ i++; sum+=i; } System.out.println(sum); //5050
//先执行后判断,至少执行一次 do{ i++; sum+=i; }while(i<100) //跟上面效果一样
//(初始化;条件判断;迭代) 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"); //输出完不换行 } if(i%(3*5)==0){ 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(); }
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]); }
//打印101-150之间所有的质数 int count = 0; 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+" "); }