hasNextLine()求助
编写一个计算平均分的抽象类ComputerAverage,类中有一个录入成绩方法input和一个抽象方法求平均分方法average。定义Gymnastics类和School类继承ComputerAverage类。Gymnastics类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分。
School中计算平均分的方法是直接是总分除以总科目。
要求:测试类中要定义两个ComputerAverage对象(分别由Gymnastics类、 School类实例化),分别调用averge方法求得平均分。
我的思路:
由于输入的数字个数不确定,想用hasNextLine()如果输入了字符a结束输入,可是运行的时候老是报错。
“类中有一个录入成绩方法input”这个要求是什么意思?不知道怎么实现。
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String str;
String []s = null;
while(sc.hasNextLine()) {
if(s.equals("a")) break;
str=sc.nextLine();
s=str.split(" ");
}
for(int i=0;i<s.length;i++) {
System.out.println(s);
}
}
}
就写一个函数
import java.util.Arrays;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] s = input();
for(int i = 0; i < s.length; i++)
{
System.out.println(s);
}
}
public static String[] input()
{
Scanner sc=new Scanner(System.in);
String str = "";
String[] str2 = null;
while(sc.hasNextLine()) {
str=sc.nextLine();
str2 = str.split(" ");
if(str2.equals("a"))
{
break;
}
}
// 去除数组中最后一个元素
str2 = Arrays.copyOf(str2,str2.length-1);
return str2;
}
}
package work1016;
import java.util.Arrays;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ComputerAverage c1=new School();
ComputerAverage c2=new Gymnastics();
int []s=c1.input();
c1.average(s);
c2.average(s);
}
}
abstract class ComputerAverage
{
//input方法
public int [] input() {
Scanner sc=new Scanner(System.in);
String str = null;
String []s = null;
int i=0;
int ave=0;
while(sc.hasNext()) {
str = sc.nextLine();//读取一行数字赋值给字符串
s = str.split(" ");//将字符串以空格为间隔依次存入字符串数组
break;
}
int []s1=new int;
for(i=0;i<s.length;i++) {
s1=Integer.parseInt(s);//将字符串数组转换为整型数组用于计算均值
}
return s1;
}
//抽象方法求均值
public abstract void average(int[] s1);
}
class Gymnastics extends ComputerAverage
{
@Override
public void average(int[] s1) {
// TODO Auto-generated method stub
Arrays.sort(s1);//从小到大排序
int ave=0;
for(int i=1;i<s1.length-1;i++) {
ave += s1;
}
ave=ave/(s1.length-2);
System.out.println("去掉一个最低分,去掉一个最高分,然后求平均分:"+ave);
}
}
class School extends ComputerAverage
{
@Override
public void average(int[] s1) {
// TODO Auto-generated method stub
int ave=0;
for(int i=0;i<s1.length;i++) {
ave+=s1;
}
ave=ave/s1.length;
System.out.println("总分除以总科目的平均分为:"+ave);
}
}
页:
[1]