2道Java基础题,求详细的代码和注释,谢谢!

1.28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)2.有五个学生,每个学生有3门课(语文... 1.
28人买可乐喝,
3个可乐瓶盖可以换一瓶可乐,
那么要买多少瓶可乐,够28人喝?
假如是50人,又需要买多少瓶可乐?(需写出分析思路)

2.
有五个学生,
每个学生有3门课(语文、数学、英语)的成绩,
写一个程序接收从键盘输入学生的信息,
输入格式为:name,30,30,30(姓名,三门课成绩)
然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。

希望有所有的代码实现和详细的注释,最好每行都有!
新手一个,诸多不懂,多谢了各位,分不是很多,辛苦了!
展开
 我来答
百度网友f0240c618
2014-08-13 · TA获得超过220个赞
知道小有建树答主
回答量:159
采纳率:100%
帮助的人:72.3万
展开全部
import java.util.Scanner;
public class Test {
//思路:每三瓶可以多要一瓶,也就是买三瓶等于四瓶,用人数除以四得到的商是买三瓶的数量乘以三再加上余数就是需要买多少瓶啦~
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//扫描输入字符
System.out.println("请输入人数");
int number = scanner.nextInt();//把输入的人数赋值给number
int shang = number/4;//得到商
int yushu = number%4;//得到余数
System.out.println("一共需要买"+(shang*3+yushu)+"瓶");//输出需要买多少瓶
}
}

这是第一题~

下边是第二题~

import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Test {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
String[] str = new String[5];
String[][] info = new String[5][5];
for(int i = 0; i < str.length; i++){
str[i] = scanner.nextLine()+",0";
info[i] = str[i].split(",");
//System.out.println(info[i][1] + info[i][2] + info[i][3]);
int sum = Integer.parseInt(info[i][1])+Integer.parseInt(info[i][2])+Integer.parseInt(info[i][3]);
//System.out.println(sum);
info[i][4] = sum+"";
}
String[] temp = new String[5];
for(int i=0;i<4;i++){
            for(int j=i+1;j<5;j++){
                    if (Integer.parseInt(info[i][4])>Integer.parseInt(info[j][4])){
                     temp = info[i];
                     info[i] = info[j];
                     info[j] = temp;
                    }
            }
        }
FileWriter fw=new FileWriter("D:\\test.txt");
fw.write("名字\t语文成绩\t数学成绩\t英语成绩\t总分\r\n");
for(int i = 4; i >= 0; i--){
for(int j = 0;j<5;j++){
fw.write(info[i][j]+"\t");
}
fw.write("\r\n");
}
fw.close();
}
}

输入测试数据:

a,1,2,3

b,1,1,1

c,0,1,1

d,1,3,1

e,1,1,2

输出结果如图

哦 还有注释....

import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Test {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
String[] str = new String[5];
String[][] info = new String[5][5]; //声明二维数组,用来存放输入数据.
for(int i = 0; i < str.length; i++){
str[i] = scanner.nextLine()+",0";//把输入的每行数据用','分开存入数组中
info[i] = str[i].split(",");
int sum = Integer.parseInt(info[i][1])+Integer.parseInt(info[i][2])+Integer.parseInt(info[i][3]);//把三门课的成绩相加得到总分
info[i][4] = sum+"";//把总分存到数组中
}
String[] temp = new String[5];//下边是冒泡排序,temp数组用来作中间变量进行数据交换,
                                                    //这个我就不写原理了啊,网上多的是冒泡排序,结果是把二维数组每行数据按照总分从小到大排序
for(int i=0;i<4;i++){
            for(int j=i+1;j<5;j++){
                    if (Integer.parseInt(info[i][4])>Integer.parseInt(info[j][4])){
                     temp = info[i];
                     info[i] = info[j];
                     info[j] = temp;
                    }
            }
        }
FileWriter fw=new FileWriter("D:\\test.txt");//输出到txt
fw.write("名字\t语文成绩\t数学成绩\t英语成绩\t总分\r\n");//\t为制表符\r\n为换行符
for(int i = 4; i >= 0; i--){//遍历二维数组,因为是从小到大排的,所以输出的时候倒序输出~
for(int j = 0;j<5;j++){
fw.write(info[i][j]+"\t");
}
fw.write("\r\n");
}
fw.close();//关闭fw,这样才能把结果存入txt中.
}
}

 哪里不懂的话,继续提问撒~

手打不易,望采纳~

追问
太感谢你了,非常详细的代码和注释,太感动了,真是帮了我的大忙!  代码我照打了一遍,就是感觉没有处理异常,别的地方都很完美!
kasim416
2014-08-13 · TA获得超过707个赞
知道小有建树答主
回答量:351
采纳率:100%
帮助的人:295万
展开全部

要求有图形界面么?


先上一段代码,这个是第一问的,手动输入人数,给出结果

public static void main(String [] args){
System.out.print("请输入人数:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int people = Integer.parseInt(str);
int b = method(people);
System.out.print(b);
}


/**
 * 采用枚举的方法,无限次循环,直到找到符合标准的答案跳出循环
 * */
public static int method(int people){
int num = 1; //枚举变量
int cap = 0;      //瓶盖计数容器
int bottle = 0; //瓶子计数容器
while(true){
bottle = num;  
cap = num;
while(cap >= 3){  //当手中的瓶盖数还小于3个,无法继续换购,循环结束
int a = cap / 3;   //瓶盖数除3取整就是可换购数
bottle += a;       //已购买数量上加上本次换购数量
cap = cap%3 + a;   //本次换购数量加手中剩余瓶盖数
}
if(bottle >= people)break;
else num++;
}
return num;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wq86019595
2014-08-13 · 超过20用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:35.4万
展开全部
分有点少,这些代码加起来几百行。才给五分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式