大家好,又见面了,我是你们的朋友全栈君。
以检测到用户输入的空格为结束符,但是一定要读取到有效字符才可以结束,也就是刚开始遇到的空格就会抛弃,而中间遇到空格才会停止。
所以next()不能得到带有空格的字符串
用来检测是否还有下一个输入,返回布尔值
用于使用完毕Scanner对象后,关闭输入流
package scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args){
//创建一个扫描对象
// 先new一个Scanner 参数为System.in :
// new Scanner(System.in); 按alt+enter 自动创建本地变量
Scanner scanner = new Scanner(System.in);
System.out.println("使用next()方法接收");
//输入hello world 只能接收到hello 因为中间有空格
//判断用户后面还有没有输入字符
if(scanner.hasNext()==true){
//使用next()方法接收
String str=scanner.next();//输入hello world
System.out.println("输入内容为"+str);//只能接受到hello
}
scanner.close();//用完scanner要关闭,节省资源
//凡是属于IO流的类要养成用完就关掉的习惯
}
}
####nextLine();
以检测到用户输入回车enter 为结束符,可以获得空格。
用来检测是否还有下一行输入,返回布尔值
package scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine()接受");
if(scanner.hasNextLine()==true){
String str=scanner.nextLine();//输入hello world
System.out.println("输出的内容为:"+str);//接收到hello world
}
scanner.close();
}
}
常规还是用nextLine(),并且一般不用判断是否后面还有数据,用一个字符串对象接收nextLine()获取的值
public class Demo03 {
public static void main(String[] args) {
//从键盘接受(可以不判断用户是否还有下一个输入)
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
String str = scanner.nextLine();
System.out.println("您输入的内容为:\n"+str);
scanner.close();
}
}
接受指定类型的数据——nextInt(),nextDouble()
package scanner;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
//新建一个扫描器对象
Scanner scanner=new Scanner(System.in);
int i=0;
float f=0.0f;//记住 float 类型要末尾加 f与 double区别
System.out.println("请输入整数:\n");
//接收一个整数,如果不是整数就不会接收
if(scanner.hasNextInt()){
i=scanner.nextInt();
System.out.println("整型数据"+i);
}
else{
System.out.println("你输入的不是整数");
}
//接收一个单精度浮点数,如果不是就不会接收
System.out.println("请输入小数:\n");
if(scanner.hasNextFloat()){
f=scanner.nextFloat();//如果此处输入了整数,会自动转换为浮点数
System.out.println("小数数据"+f);
}
else{
System.out.println("你输入的不是小数");
}
scanner.close();
}
}
一个小案例: 输入多个数据,计算总和,平均数。每输入一个数字用回车确认,输入非数字结束。
package scanner;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args){
System.out.println("请输入数据");
Scanner scanner = new Scanner(System.in);
//求和
double sum=0;
//计数
int m=0;
//通过循环判断是否还有输入,并对每一次输入进行求和统计
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;
sum=sum+x;//sum+=x
System.out.println("你已经输入"+m+"个数,当前和为:"+sum+",当前平均值为:"+sum/m);
}
System.out.println("你一共输入"+m+"个数");
System.out.println(m+"个数的和为"+sum);
System.out.println(m+"个数的平均数为"+sum/m);
scanner.close();
public class Demo06 {
public static void main(String[] args){
char grade='M';
switch(grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
default:
System.out.println("未知等级");
case 'D':
System.out.println("不及格");
break;
//switch的每种情况顺序是不影响的,程序会自动匹配;
//匹配不到时会选择default
//只有遇到break才退出,不然向下继续执行
//efault中没有break,程序也会继续向下执行
}
}
}
反编译
IDEA自带反编译方法
.java——编译后——.class文件(字节码文件)——反编译(使用IDEA)——.java
具体方法如下
要注意程序执行顺序 for(初始化循环变量;条件判断;自增自减){循环体}
小练习 : 输出1-1000内能被5整除的数,每行仅输出3个
public class Demo08 {
public static void main(String[] args){
for (int i = 0; i < 100; i++) {
if(i%5==0){
System.out.print(i+"\t");
//每输出一个数隔开一个tab
}
if(i%5*3==0){
System.out.println();
//没输出三个数,输出一个换行
//也可以System.out.print("\n");
}
}
}
}
println和print的区别,前者会自动换行
小练习: for循环打印九九乘法表
public class Demo09 {
public static void main(String[] args) {
//九九乘法表
for (int i = 1; i < 10; i++) {
for(int j= 1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j);
System.out.print("\t");
}
System.out.println();
}
}
}
用于遍历数组、对象
IDEA快捷键——对象.for
格式 for(临时变量类型 变量名 :需要遍历的数组或对象){循环体操作}
public class Demo10 {
public static void main(String[] args) {
int[] numbers={
10,20,30,4,50};//数组的定义
for(int x:numbers){
System.out.println(x);
}
}
}
判断字符串是否与另一个字符串相等 (仅仅比较值是否相等,不能比较引用)
str.equals(“hello”)
“goto关键字”在java中的影子 Java中本来没有goto 关键字——用标签来实现跳转,通过continue跳转到指定标签位置(仅作了解——不建议使用)
以下程序再最外层循环设置了标记outer,方便continue跳出
public class Demo11 {
public static void main(String[] args) {
outer: for(int i=1;i<20;i++){
for(int j=2;j<i/2;j++){
if(i%j==0){
//此处求质数的算法再理解一下 备注到下方
continue outer;
}
}
}
}
}
notes: 质数是大于1的自然数中,只能被1和本身整除的数
小练习: 打印如图所示三角形
public class Demo12 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >=i; j--) {
System.out.print(" ");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
快捷打开window绘图软件 (win+R——mspaint)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168488.html原文链接:https://javaforall.cn