java的一道题目 帮我看看为什么程序总是崩溃
这是题目使用Scanner类实现从键盘输入多位同学的数学、物理、英语三门课的成绩,要求计算并输出每位同学的总分,各门课的平均成绩及平均总分。(参看例子14)要求如下:1)...
这是题目
使用Scanner类实现从键盘输入多位同学的数学、物理、英语三门
课的成绩,要求计算并输出每位同学的总分,各门课的平均成绩及平
均总分。(参看例子14)
要求如下:
1)一次输入一行(格式为姓名 数学成绩 物理成绩 英语成绩)
2)分数之间用空格或逗号隔开
3)用end结束结束输入
4)用nextLine()一次读入一行,用trim()去掉行首和行尾的空行,
然后用split()方法分解字符串,用Double.parseDouble()解析获得
成绩值)
这是我写出来的程序:
package sy_9;
import java.util.Scanner;
public class Average {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=0;
String linText;
double mathSum=0,physicsSum=0,englishSum=0;
System.out.println("格式为姓名 数学成绩 物理成绩 英语成绩,以end结束");
Scanner sc=new Scanner(System.in);
linText=String.valueOf(sc.nextLine());
while(linText!="end"){ //我试了一下输入end停不了啊,为什么?
i=i+1;
String reg="^[1234567890.]+";
linText=linText.trim();
System.out.println(linText);
String temp[]=linText.split(reg);
mathSum +=Double.parseDouble(temp[1]); //一到这里就运行不下去了,,为什么,语法也没有错误啊
physicsSum +=Double.parseDouble(temp[2]);
englishSum +=Double.parseDouble(temp[3]);
linText=sc.nextLine();
}
System.out.println("数学的平均成绩为:"+mathSum/i+
",物理的平均成绩为:"+physicsSum/i+",英语的平均成绩为"+englishSum/i);
}
} 展开
使用Scanner类实现从键盘输入多位同学的数学、物理、英语三门
课的成绩,要求计算并输出每位同学的总分,各门课的平均成绩及平
均总分。(参看例子14)
要求如下:
1)一次输入一行(格式为姓名 数学成绩 物理成绩 英语成绩)
2)分数之间用空格或逗号隔开
3)用end结束结束输入
4)用nextLine()一次读入一行,用trim()去掉行首和行尾的空行,
然后用split()方法分解字符串,用Double.parseDouble()解析获得
成绩值)
这是我写出来的程序:
package sy_9;
import java.util.Scanner;
public class Average {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=0;
String linText;
double mathSum=0,physicsSum=0,englishSum=0;
System.out.println("格式为姓名 数学成绩 物理成绩 英语成绩,以end结束");
Scanner sc=new Scanner(System.in);
linText=String.valueOf(sc.nextLine());
while(linText!="end"){ //我试了一下输入end停不了啊,为什么?
i=i+1;
String reg="^[1234567890.]+";
linText=linText.trim();
System.out.println(linText);
String temp[]=linText.split(reg);
mathSum +=Double.parseDouble(temp[1]); //一到这里就运行不下去了,,为什么,语法也没有错误啊
physicsSum +=Double.parseDouble(temp[2]);
englishSum +=Double.parseDouble(temp[3]);
linText=sc.nextLine();
}
System.out.println("数学的平均成绩为:"+mathSum/i+
",物理的平均成绩为:"+physicsSum/i+",英语的平均成绩为"+englishSum/i);
}
} 展开
3个回答
展开全部
public class Average {
public static void main(String[] args) {
int i=0;
String linText;
double mathSum=0,physicsSum=0,englishSum=0;
System.out.println("格式为姓名 数学成绩 物理成绩 英语成绩,以end结束");
Scanner sc=new Scanner(System.in);
linText=String.valueOf(sc.nextLine());
while (!linText.endsWith("end")) {
//我试了一下输入end停不了啊,为什么?
i=i+1;
linText=linText.trim();
String temp[]=linText.split("\\s{1,}");
mathSum +=Double.parseDouble(temp[1]); //一到这里就运行不下去了,,为什么,语法也没有错误啊
physicsSum +=Double.parseDouble(temp[2]);
englishSum +=Double.parseDouble(temp[3]);
linText=sc.nextLine();
}
System.out.println("数学的平均成绩为:"+mathSum/i+
",物理的平均成绩为:"+physicsSum/i+",英语的平均成绩为"+englishSum/i);
}
}
更多追问追答
追问
为什么用我定义的那个正则表达式,就分割不出来我想要的结果呢
追答
我还想问你为什么你认为那个正则能分解出你要的结果?要返回匹配结果只能用group了
展开全部
字符串比较用equals方法,至于运行不下去,我的看看是什么错误啊,要不然就是你的split解析有问题,解析出来的不是数字
更多追问追答
追问
解析出来的怎么就不是数字了
追答
你打印出来看看啊,不然怎么知道啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先end你没有定义,所以不可以停止,死循环。
追问
End定义怎么定义呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询