Java流程控制
用户交互:Scanner
之前我们写的代码并未实现人和程序的交互,今天我们来学习交互的方法
基本语法
Scanner s=new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,使用hasNext()与hasNextline()判断是否还有输入的数据
import java.util.Scanner;//自动导入的包
public class td01 {
public static void main(String[] args) {
//创建一个扫描器变量,用于接收键盘的输入
Scanner scanner=new Scanner(System.in);//输入后会为我们自动导入用到的包
System.out.println("使用next方式接受:");
if(scanner.hasNext())//要求我们输入字符串并判断是否有效,无效的有空格,换行等{
String str=scanner.next();//使用next方式接收用户的输入
System.out.println("输入的内容为:"+str);
}
scanner.close();//关闭此IO流的类,避免一直占用资源 (io流,即输入输出流)
}
}
运行结果
import java.util.Scanner;
public class td02 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("使用nextLine方式接受:");
if(scanner.hasNextLine()){
String str=scanner.nextLine();//使用nextLine方式接收
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
}
运行结果
另一个例子
我们现在不需要清楚的知道具体的用法,只需要了解个大概就行了
next()和nextLine()的区别
next():
一定要读取到有效字符后才可以输入。
对输入有效字符之前遇到的空白,会去掉
输入字符后将空白作为结束符
不能得到有空格的字符串
nextLine():
以enter为结束符
可以获得空白
其他输入
还可以输入整型,浮点型等
public class td04 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);//Scanner是类,scanner是变量名
int i=0;
float f=0.0f;
System.out.println("请输入整数:");
if(scanner.hasNextInt()){
i=scanner.nextInt();
System.out.println("整数为:"+i);
}else{
System.out.println("你输入的不是整数!");
}
System.out.println("请输入小数:");
if(scanner.hasNextFloat()){
f=scanner.nextFloat();
System.out.println("小数为:"+f);
}else{
System.out.println("你输入的不是小数!");
}
scanner.close();
}
}
两种输入及其运行结果
注意,第二张图输入10.1后i就没有接收这个值,因此他会进入下一个if语句
顺序结构
Java的基本结构就是顺序结构
即从上往下依次执行(除非特别指明)
选择结构
if语句
Java中的if语句与c语言中的if语句相同,格式为
if(判断语句)
{
执行语句
}
else if(判断语句)
{
执行语句
}
else
{
执行语句
}
并且可以嵌套使用
一个if语句例子
import java.util.Scanner;
public class ta06 {
public static void main(String[] args) {
System.out.println("请输入内容:");
Scanner scanner=new Scanner(System.in);
String s=scanner.nextLine();
if(s.equals("hello"))//判断字符串是否相等(不能用==)
{
System.out.println("s");
}
scanner.close();
}
}
如果输入hello,则会输出s
注意:一旦有一个判断语句成立,其余的判断语句不再执行
方法的寻找
另外,在idea中,我们把光标移动到Scanner上,按住CTRL点击鼠标左键,即可进入此界面
我们找到页面左下角的结构
进入结构
我们会发现Scanner的很多方法都在这里
switch语句
Java中的switch与c语言中相同,举例说明用法
如图,switch中会执行值所对应case中的命令,若没有对应的,则会执行default中的命令
注意:每个case中最后要加入break;否则程序将会执行下一个case/default,直到语句结束或遇到break;
public class switch01 {
public static void main(String[] args) {
char grade='c';
switch(grade){
case 'a':
System.out.println("优秀");
case 'b':
System.out.println("良好");
case 'c':
System.out.println("及格");
case 'd':
System.out.println("再接再厉");
case 'e':
System.out.println("挂科");
break;
default:
System.out.println("未知命令");
}
}
}
如图,结果会输出
及格
再接再厉
挂科
反编译
图解说明
先按ctrl+alt+shift+s打开项目结构
复制其中的路径并在我的电脑中找到production,并一路找到class文件
找到class文件后,把它拖进存放Java文件的目录中,即可看到反编译后的文件
3
也可以直接选择打开文件
循环结构
while
while()
{;}
若括号内表达式值为true,则执行大括号内的指令,直至括号内值为false
do while
do{;}while();
与while大同小异,先执行大括号内指令,再判断条件
for
格式for(初始化值;判断条件;执行完大括号内语句执行的语句)
{;}
大括号内为判断条件后执行的语句
快捷键,输入100.for或者fori自动生成for循环
前者生成for(i=0;i<100;i++){}
后者生成for(i=0;i<;i++){}
break&continue
break
break用于跳出各种循环即switch语句
continue
用于循环中,跳出此次循环,并进行条件判断来决定是否继续循环
标签
Java中虽然没有goto语句,但有标签功能
public class label01 {
public static void main(String[] args) {
//求101到150之间的质数
int count=0;
outer:for (int i = 101; i <= 150; i++) {
continue outer;//跳到continue
}
}
}
如图所示,在程序遇到continue 标签名后。就会自动跳转到标签名所在位置继续执行
练习
打印九九乘法表
打印一个如图所示的三角形,假设第一行*前有三个空格,第二行前两个,第三行前一个,第四行前没有
提示
- 九九乘法表打印后你可能会发现并不美观,这时可以使用\t命令,它的作用效果如图所示
使用它可以使a占用的空间设为固定值,\t在左边则a向右对齐 - print是打印并不换行的函数,println打印完自动换行
- 如果程序中有错误,可以设置断点,并进行调试,程序将停在断点,点击蓝色向下箭头可一步步执行程序,并可以在下方监视相关变量