java流程控制 用户交互Scanner
最最最重要的是,所有关键词的输入,要注意大小写区别。
scanner基操
- 意思是操作者可以进行输入,和计算机进行互动。
- 也就是我们可以通过Scanner来获取用户的输入。然后计算机根据输入的东西,进行操作。
- 最基本的语法(创造一个扫描器对象,用于接受键盘数据)
Scanner s = new Scanner(System.in);
在输入这个的时候会在类的上面出现
import Java.util.Scanner;
这表示该地方引入了跟Scanner有关的包。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7nJBzcc7-1636645026739)(E:\Java截图\day12\QQ截图20211111213851.png)]
-
然后通过Scanner类的next()与nextLine()方法来获取输入的字符串,在读取前我们一般需要使用hasNext()(还是否有下一个)和hasNextLine()(还是否有下一行)来判断是否还有输入的数据。 if(scanner.hasNext()==true){}
if(scanner.hasNext()){}
上述的两种表达方式是一样的。因为不加 ‘==true’ 系统是默认 ‘==true’ 的 所以这两行代码的意思是:若有输入则为 真(true)那么就要执行if 后面大括号里面的语句。如果没有输入则为flase 是不会执行后面大括号里面的内容。 -
然后在大括号里面输入String.str = scanner.next();即可
if(scanner.hasNext()==true){
String.str = scanner.next();
System.out.println(str);
}
这样就可以将你输出的结果在屏幕上输出了。
- 当你用完时,应当在方法里的最后加上 scanner.close(); 因为scanner 属于IO流 若不关闭 他会占用资源(了解即可)。正确格式如下图。其他IO也有这个特性
import Java.util.Scanner;
public class 文件名{
public static void main (String[] args){
Scanner s = new Scanner(System.in);
if(scanner.hasNext()==true){
String.str = scanner.next();
System.out.println(str);
}
scanner.close();
}
}
- 当伙伴们输入这行代码的时候,如果你们输入hello world! 他只会输出hello .
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-soOvL83i-1636645026750)(E:\Java截图\day12\QQ截图20211111221345.png)]
- 你们将其中的Next换成NextLine 再进行输入 这时候输出的结果就是 hello world.
next()和nextLine() 区别
next()
- 一定要读取到有效字符后才可以结束收入。
- 对输入有效字符之前遇到的空白,Next()方法会自动将其去掉。
- 只有输入有效字符后才能将其后面输入的空白作为分隔符或者结束符。
- Next()不能得到带有空格的字符串。
nextLine()
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得字符串中的空白。
scanner进阶
1
- scanner.hasNextInt()这个是判断你输入是否还有整数,那么对应的接受应该是scanner.nextInt();
- scanner.hasNextFloat() scanner.nextFloat(); 等等还有很多;
- 前面提到了If 那么对应的是else 意思就是如果满足了if 那么就执行IF 大括号里面的内容,如果不满足if ,那么就执行else 里面的内容,如下图。
if (scanner.hasNextInt())
{
d = scanner.nextInt();
System.out.println("整数:" + d);
}
else
{
System.out.println("输入的不是整数");
}
- 大家可以输一下 下面这个程序 然后输入数字,执行一下。
import java.util.Scanner;
public class dsadasda {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int d = 0;
float f = 0.0f;
System.out.println("请输入整数");
if (scanner.hasNextInt())
{
d = scanner.nextInt();
System.out.println("整数:" + d);
}
else
{
System.out.println("输入的不是整数");
}
System.out.println("请输入小数");
if(scanner.hasNextFloat())
{
f = scanner.nextFloat();
System.out.println("小数:" + f);
}
else
{
System.out.println("输入的不是小数");
}
scanner.close();
}
}
- 在上面输入数字,你在控制台输入数字后,会先进行一个判断,若满足,他才会接受。
2.循环判断
-
在这就会用到while( ){} 意思是:如果满足while括号里面的条件,就执行大括号里面的,执行完大括号后,再次回到while进行重新判断。如果满足while括号里面的条件,就执行大括号里面的,然后一直循环,直到不满足while后,会退出while这个 大循环 -
输入几个数,然后求平均值,然后输出,输入非数字停止,如下图
import java.util.Scanner;
public class asdasdasda {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum = 0;
int n = 0;
while(scanner.hasNextDouble()) {
double x = scanner.nextDouble();
n++;
sum = sum + x;
}
double average = sum/n;
System.out.println(average);
scanner.close();
}
}
- 可以将上面的while进行改进改成
import java.util.Scanner;
public class asdasdasda {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum = 0;
int n = 0;
while(scanner.hasNextDouble()) {
sum+=scanner.nextDouble();n++;
}
double average = sum/n;
System.out.println(average);
scanner.close();
}
}
|