关于Scanner输入的问题

关于Scanner输入的问题

有三个问题,问题描述比较长,烦请老师解惑

1,在练习中,如果直接使用 

Scanner sc=new Scanner(System.in);
var=sc.nextInt();

语句来获取输入的话,会报如下错误

http://img1.sycdn.imooc.com//climg/5a0d84f30001f99504900166.jpg

请问老师这种报错是什么原因呢?


2,在eclipse中使用如上输入语句,会被建议修改为

private static Scanner sc;
public static void main(String[] args){
    //其他语句
    sc=new Scanner(System.in);
    var=sc.nextInt();
    //其他语句
}

请问为什么会这样?以及private关键字起的作用?


3,请问只用一次循环是不是本次练习的最优解呢?

附上本次练习代码:

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));
   }
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

1、关于在线编辑器的问题,你再试试,我这边试了一下,第一遍提交出了问题,后来可以用了,你再试试

2、第二个问题,这么修改是把Scanner sc定义成了类变量,这样整个类中的方法就都可以使用了。private是私有的意思,用它修饰就只能在这个类中使用,在面向对象部分会详细介绍。

3、只用一次循环确实是效率最高的。建议把sc=new Scanner(System.in);放到循环的外面,避免执行一次就创建一个对象。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师