Scanner中nextLine()方法和next()方法的使用概括
来源:互联网 发布:比较有名的网络女歌手 编辑:程序博客网 时间:2024/05/16 05:53
编写小程序是遇到点小问题,编译通过,运行结果始终达不到自己想要的效果,下面是源程序:
import java.util.Scanner;
public class ScoreInput {
/*
*next()根nextLine()的区别:
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要录入的学生信息总个数:");
int sum = sc.nextInt();
Student[] s = new Student[sum];
for(int i = 0;i<s.length;i++){
s[i] = new Student();
}
int i = 0;
int all = 0;
while(i<s.length){
System.out.println("请输入学生姓名:");
s[i].setName(sc.nextLine()); //next()和nextLine()的区别
System.out.println("请输入学生年龄:");
s[i].setAge(sc.nextInt());
System.out.println("请输入学生成绩:");
s[i].setScore(sc.nextInt());
System.out.println(s[i]);
all += s[i].getScore();
i++;
}
System.out.println("学生的平均成绩为:"+(all/sum));
}
}
该程序的作用比较简单,通过键盘录入学生的信息包括姓名,年龄,成绩,最后根据总分数跟人数计算录入成绩的平均分
设想的结果很好,结果中途出现问题:
到该输入学生姓名的时候自动跳过,提示输入学生年龄
最后通过查找资料,了解到nextLine()和next()的特性:
nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串**的
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。
鉴于以上两种方法的区别,在编程时一定要注意next()方法和nextLine()方法的连用
以上代码bug可以通过下面两种方式解决
第一种:
import java.util.Scanner;
public class ScoreInput {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要录入的学生信息总个数:");
int sum = sc.nextInt();
Student[] s = new Student[sum];
for(int i = 0;i<s.length;i++){
s[i] = new Student();
}
int i = 0;
int all = 0;
while(i<s.length){
sc.nextLine(); //在此位置追加一个nextLine()的语句
System.out.println("请输入学生姓名:");
s[i].setName(sc.nextLine()); //next()和nextLine()的区别
System.out.println("请输入学生年龄:");
s[i].setAge(sc.nextInt());
System.out.println("请输入学生成绩:");
s[i].setScore(sc.nextInt());
System.out.println(s[i]);
all += s[i].getScore();
i++;
}
System.out.println("学生的平均成绩为:"+(all/sum));
}
}
第二种:
import java.util.Scanner;
public class ScoreInput {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要录入的学生信息总个数:");
int sum = sc.nextInt();
Student[] s = new Student[sum];
for(int i = 0;i<s.length;i++){
s[i] = new Student();
}
int i = 0;
int all = 0;
while(i<s.length){
System.out.println("请输入学生姓名:");
s[i].setName(sc.next()); //直接在此处换为next()语句接收
System.out.println("请输入学生年龄:");
s[i].setAge(sc.nextInt());
System.out.println("请输入学生成绩:");
s[i].setScore(sc.nextInt());
System.out.println(s[i]);
all += s[i].getScore();
i++;
}
System.out.println("学生的平均成绩为:"+(all/sum));
}
}
以后这些小的方法的细节还是需要斟酌使用
参考链接 点击打开链接:
- Scanner中nextLine()方法和next()方法的使用概括
- Scanner中next()方法和nextLine()方法的区别
- Scanner中nextLine()方法和next()方法的区别
- Scanner中next()和nextLine()方法的区别
- 浅析Java中Scanner的next()和nextLine()方法
- Java中Scanner类的next()和nextLine()方法对比
- java Scanner中的 next() 方法和 nextLine() 方法的区别
- java Scanner 中 next()方法和nextLine()区别
- Scanner类中的next()和nextLine()方法
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- Scanner类 next与nextLine方法的使用问题
- Scanner的next与nextLine方法
- java中Scanner类中的next()和nextLine()方法的区别
- Scanner中next()和nextLine()
- Scanner中nextLine方法
- 简略解析 java Scanner中的 next() 方法和 nextLine() 方法:
- Linux学习 第二单元
- 提供android的UI体验度
- Android开发 —— apk打包流程
- 在Spark上通过BulkLoad快速将海量数据导入Hbase
- codeforces 219D 【树形DP】
- Scanner中nextLine()方法和next()方法的使用概括
- webpack学习笔记(代码分割,按需加载)
- POJ2762-Going from u to v or from v to u?(有向图强连通分量缩点)
- 2010 水仙花数
- 如何监听Android手机物理返回键
- Git 使用备忘
- Hdu-1885-Key Task [状态压缩][bfs]
- js数组中出现次数最多和第二多的元素
- python ----pyCharm(IDE)------2017.1安装