关于Scanner输入的问题
有三个问题,问题描述比较长,烦请老师解惑
1,在练习中,如果直接使用
1 2 | Scanner sc= new Scanner(System.in); var=sc.nextInt(); |
语句来获取输入的话,会报如下错误
请问老师这种报错是什么原因呢?
2,在eclipse中使用如上输入语句,会被建议修改为
1 2 3 4 5 6 7 | private static Scanner sc; public static void main(String[] args){ //其他语句 sc= new Scanner(System.in); var=sc.nextInt(); //其他语句 } |
请问为什么会这样?以及private关键字起的作用?
3,请问只用一次循环是不是本次练习的最优解呢?
附上本次练习代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import java.util.Scanner; public class ScoreDemo{ private static Scanner sc; public static void main(String[] args){ int [][] arr; int cnSum= 0 ; int mathSum= 0 ; arr = new int [ 3 ][ 2 ]; for ( int i= 0 ;i<arr.length;i++) { sc= new Scanner(System.in); System.out.println( "请输入第" +(i+ 1 )+ "个学生的语文成绩" ); arr[i][ 0 ]=sc.nextInt(); cnSum+=arr[i][ 0 ]; System.out.println( "请输入第" +(i+ 1 )+ "个学生的数学成绩" ); arr[i][ 1 ]=sc.nextInt(); mathSum+=arr[i][ 1 ]; } System.out.println( "语文总成绩为:" +cnSum); System.out.println( "语文平均成绩为:" +(cnSum/arr.length)); System.out.println( "数学总成绩为:" +mathSum); System.out.println( "数学平均成绩为:" +(mathSum/arr.length)); } } |
20
收起
正在回答
1回答
1、关于在线编辑器的问题,你再试试,我这边试了一下,第一遍提交出了问题,后来可以用了,你再试试
2、第二个问题,这么修改是把Scanner sc定义成了类变量,这样整个类中的方法就都可以使用了。private是私有的意思,用它修饰就只能在这个类中使用,在面向对象部分会详细介绍。
3、只用一次循环确实是效率最高的。建议把sc=new Scanner(System.in);放到循环的外面,避免执行一次就创建一个对象。
祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧