高分追加,,简单 Java 编程问题

我有两道Java 题目不会做。
要求是这样

第一题:
编写一个Java程序: 如果输入0,程序直接结束,除外,如果输入 1 2 -1 3 0
输出:正数有3个
负数有1个
一共5个数字
平均数为1.25

第二题是这样:
编写一个程序,让他可以执行以下动作
输入学生数量:4

请学生姓名:小名
输入学生分株:56
请学生姓名:小刘
输入学生分株:47
请学生姓名:小华
输入学生分株:59
请学生姓名:小强
输入学生分株:20

输出:
前2名学生:
小华分数为59.0
小名分数为56.0

需要java语言。哪位大侠花谢这两条程序啊。高分追加!

第1个回答  2011-10-13
因为看程序应该是比较简单的,所以没有对一些特殊情况做判断,不过写的已经很明确了。希望lz用的上

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;

public class MathTest {

private static int mPlusCount;//正数个数
private static int mNegativeCount;//负数个数
private static float mTotal;

private static Map<String,Integer> mStudentMap = new HashMap<String,Integer>();
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
args = new String[]{"1", "2", "-1" ,"3", "0"};
for (int i = 0; i < args.length; i++) {
enter(args[i]);
}
System.out.println("正数有:" + mPlusCount);
System.out.println("负数有:" + mNegativeCount);
System.out.println("总数有:" + (mPlusCount+mNegativeCount));
System.out.println("平均数有:" + (mTotal/(mPlusCount+mNegativeCount)));

String [][] students = {{"小名","56"},{"小刘","47"},{"小华","59"},{"小强","20"},};
for (int i = 0; i < students.length; i++) {
enter(students[i][0], students[i][1]);
}
ArrayList arrayList = new ArrayList(mStudentMap.entrySet());
Collections.sort(arrayList, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return (o2.getValue() - o1.getValue());
}
});
System.out.println("前2名学生:");
for (int i = 0; i < 2; i++) {
Map.Entry<String, Integer> entry =(Map.Entry<String, Integer>)arrayList.get(i);
System.out.println(entry.getKey()+ "分数:" +entry.getValue());
}

}

private static void enter(String arg ){
int parseInt = Integer.parseInt(arg);
if(parseInt > 0){
mPlusCount ++;
}else if(parseInt < 0){
mNegativeCount ++;
}else{
return;
}
mTotal += parseInt;
}
private static void enter(String name,String fraction){
mStudentMap.put(name,Integer.valueOf(fraction));
}
}
第2个回答  2011-10-13
第一题
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
if(number==0){

System.out.println("程序结束");
}

double[] data = new double[5];
for(int i =0;i<5;i++){
data[i]=sc.nextDouble();
}
int x=0;
int y=0;
double t=0;
for(int i=0;i<data.length;i++){
if(data[i]<0){
x++;
}

y++;

t=+data[i];
}
System.out.println("负数有"+x+"个");
System.out.println("一共有"+y+"个");
System.out.println("平均数是:"+t/y);
}
第3个回答  2011-10-13
饿,我也不好意思写了,给你点提示吧,java流方面,简单应用,看下课本,很简单就可以写出来!追问

我的课本是英文的。=。= 要不怎么说会来不及呢。

追答

上网查吧,实现写不出来,你再来吧!

追问

网上找不太靠谱吧,我的题是英文的,这都是我翻译过来的。

第4个回答  2011-10-13
我帮你写,但是你要自己琢磨,我中午去吃饭,回来写给你追问

谢谢哈。我一定会琢磨的,麻烦你了。明天要交,拜托大家了。

追答

第一题:
import java.util.*;
public class TestOne {
public static void main(String[] args) {
// TODO Auto-generated method stub
int positive_count=0;//正数个数
int negative_count=0;//负数个数
int total_count=0;//输入的数字总个数
double avg=0;//平均数
double sum=0;//输入的数总和
System.out.println("请输入数字:");
Scanner sc = new Scanner(System.in);
while(true){
double number = sc.nextDouble();
sum=sum+number;
total_count++;
if(number==0){
break;//如果用户输入了0,则停止输入,开始输出
}else{
if(number>0){
positive_count++;
}else if(number<0){
negative_count++;
}
}
}
if(total_count==1){
//如果只输入了一个0,则程序退出
return;
}else{
avg=sum/total_count;//算出平均数
System.out.println("正数有:"+positive_count+"个");
System.out.println("负数有:"+negative_count+"个");
System.out.println("一共有:"+total_count+"个数字");
System.out.println("平均数为:"+avg);
}

}
}
第二题写不下了,如果需要你追问我

追问

这个我看懂了。谢谢哈。那那那。第二个呢?

追答

第二题:
import java.util.*;
public class TestTwo {
public static void main(String[] args) {
// TODO Auto-generated method stub
List list=new ArrayList();
int student_count=0;//学生个数
System.out.println("请输入学生个数:");
Scanner sc = new Scanner(System.in);
student_count = sc.nextInt();
for(int i=1;i<=student_count;i++){
Hashtable hs=null;
System.out.println("请输入学生姓名:");
String stu_name=sc.next();

System.out.println("请输入学生分数:");
double stu_score=sc.nextDouble();

hs=new Hashtable();
hs.put("Name",stu_name);
hs.put("Score",String.valueOf(stu_score));
list.add(hs);
}
//采用冒泡法排序
for(int i=0;i<list.size();i++){
for(int j=i+1;j<list.size();j++){
Hashtable hs1=(Hashtable)list.get(i);
double score1=Double.parseDouble((String)hs1.get("Score"));

Hashtable hs2=(Hashtable)list.get(j);
double score2=Double.parseDouble((String)hs2.get("Score"));
if(score1<score2){
list.set(i,hs2);
list.set(j,hs1);
}
}
}
Hashtable stuOne=(Hashtable)list.get(0);
Hashtable stuTwo=(Hashtable)list.get(1);
System.out.println("前2名学生:");
System.out.println(stuOne.get("Name")+"分数为"+stuOne.get("Score"));
System.out.println(stuTwo.get("Name")+"分数为"+stuTwo.get("Score"));
}
}

本回答被提问者采纳
第5个回答  2011-10-13
本来想给你写的,不过看楼上这么说了,觉得有道理,我们也是从你这个时候过来的,加油!相信你一定能写出来...