大家帮忙我这个菜鸟,这个程序该怎样优化代码。

liulxd 2011-08-06 01:53:49
我刚开始学,可能说的话不是很专业。。。。
效果是程序中指定了两个名字和分数,然后输出 名字 分数 合格还是不合格

首先是写一个Student类,存为Student.java
public class Student
{
public String name;
public int mark;
public void show(String result)
{
System.out.println(name+" "+mark+"分"+" "+"亲您的成绩鉴定为:"+result);
}
}

再写一个实例,调用这个类。存为TestStudent.java
public class TestStudent
{
public static void main(String[] args)
{
Student stu1=new Student();
stu1.name="阳光";
stu1.mark=58;
String result1="";
if (stu1.mark<60)
{
result1="不及格啊亲,要再接再励";
}
else
{
result1="恭喜你及格了,渡过了鬼门关";
}
stu1.show(result1);


Student stu2=new Student();
stu2.name="林依晨";
stu2.mark=65;
String result2="";
if (stu2.mark<60)
{
String s2="不及格啊亲,要再接再励";
result2=s2;
}
else
{
String s2="恭喜你及格了,渡过了鬼门关";
result2=s2;
}
stu2.show(result2);

}
}
/**
---------- 运行Java程序 ----------
阳光 58分 亲您的成绩鉴定为:不及格啊亲,要再接再励
林依晨 65分 亲您的成绩鉴定为:恭喜你及格了,渡过了鬼门关

输出完毕 (耗时 0 秒) - 正常终止
*/

为了思考方便,我首先采用这种较笨的方法。如果名字一多就麻烦了,代码将很长。。
该怎样改写呢??
...全文
138 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
go_boy111 2011-08-06
  • 打赏
  • 举报
回复
上面有错别字是及格和不及格。
go_boy111 2011-08-06
  • 打赏
  • 举报
回复
你可以这样写哦亲。
在Student里面定义一个构造函数 构造函数里面可以初始化name 和mark。
在Student里面定义一个静态方法show。show方法里面可以传:Student对象,及格的分数标准(比如说60分),和一个长度为2的String数组(放几个和不几个的时候result的值)。里面的逻辑可以自己定义!
然后在TestStudent 类里面new一个Student对象,传一个及格分数标准,然后定义一个二维数组,然后用这个静态方法就可以了。

试试哦,亲!
liulxd 2011-08-06
  • 打赏
  • 举报
回复
谢谢你们的回答,虽然我现在暂时还看的不是很懂。
但是还是很有价值的。
听人说 别人的代码是最好的教科书
我会慢慢学习的
等我看懂了 再回来
evatel 2011-08-06
  • 打赏
  • 举报
回复
class student
{
public String name;
public double mark;
public String grade()
{
if (mark<60)
return "不合格";
else
return "合格";
}
public student(String name, double mark)
{
this.name =name;
this.mark =mark;
}
public void tostring()
{
System.out.println(name+" "+mark+" "+grade());
}
}
public class Test1
{
public static void main(String[] args)
{
student stu1=new student("阳光",58);
student stu2=new student("林依晨",65);
stu1.tostring();
stu2.tostring();
}
}
sup_davi 2011-08-06
  • 打赏
  • 举报
回复
如果是多个人名可以考虑使用容器类,比如3楼用到了ArrayList,但是LZ是否考虑了人名会重名的情况,建议使用ID(学号)来标识更好。我也写了一下,比较简单,共同学习

class Student {
private String studentName;
private int grade;

public Student(String studentName, int grade) {
this.studentName = studentName;
this.grade = grade;
}

public void setName(String studentName) {
this.studentName = studentName;
}

public String getName() {
return studentName;
}

public void setGrade(int grade) {
this.grade = grade;
}

public int getGrade() {
return grade;
}

public void showResults() {
if(grade < 60) {
System.out.println(studentName + " " + grade + "分" +" " + "亲您的成绩鉴定为:不及格啊亲,要再接再励");
}
else {
System.out.println(studentName + " " + grade + "分" + " " + "亲恭喜你及格了,渡过了鬼门关");
}
}
}

public class StudentGrade {
public static void main(String[] args) {
Student s1 = new Student("阳光",58);
Student s2 = new Student("林依晨",65);

s1.showResults();
s2.showResults();
}
}
li26338710 2011-08-06
  • 打赏
  • 举报
回复
思想!
maxgt 2011-08-06
  • 打赏
  • 举报
回复
参考下。共同学习
 class Student  
{
public String name;
public int mark;
public void markIf(String name,int mark) {
if(mark<60) {
System.out.println(name+" "+mark+"分"+" "+"亲您的成绩鉴定为:不及格啊亲,要再接再励");
}
else{
System.out.println(name+" "+mark+"分"+" "+"亲您的成绩鉴定为:恭喜你及格了,渡过了鬼门关");
}
}
}

public class TestStudent
{
public static void main(String[] args)
{
Student stu1=new Student();
Student stu2=new Student();
stu1.markIf(stu1.name="阳光", stu1.mark=58);
stu2.markIf(stu2.name="林依晨", stu2.mark=65);
}
}
jingluo 2011-08-06
  • 打赏
  • 举报
回复
存到数据库,用jdbc查出一个resultset,遍历一个个打印嘛。。。

flyingZippo 2011-08-06
  • 打赏
  • 举报
回复
学习了
打油的程序员 2011-08-06
  • 打赏
  • 举报
回复

import java.util.*;

class Student {
private String name;
private int mark;
private String result;

public Student(String name, int mark) {
this.name = name;
this.mark = mark;
result = mark < 60 ? "不及格啊亲,要再接再励" : "恭喜你及格了,渡过了鬼门关";
}

public void show() {
System.out
.println(name + " " + mark + "分" + " " + "亲您的成绩鉴定为:" + result);
}
}

public class TestStudent {
public static void main(String[] args) {
List<Student> students = new ArrayList<Student>();
students.add(new Student("阳光", 58));
students.add(new Student("林依晨", 85));
for (Student student : students)
student.show();
}
}

//如果需要查看修改Student类中的域,那么在Student类中增加如下代码
/*
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getMark() {
return mark;
}

public void setMark(int mark) {
this.mark = mark;
}

public String getResult() {
return result;
}

public void setResult(String result) {
this.result = result;
}
*/
剑神一笑 2011-08-06
  • 打赏
  • 举报
回复

public class Student {

public String name;

public int mark;

public Student(String name, int mark) {
this.name = name;
this.mark = mark;
}

public int getMark() {
return mark;
}

public void setMark(int mark) {
this.mark = mark;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

public class TestStudent {

public static void show(Student stu) {
StringBuffer sb = new StringBuffer();
sb.append(stu.getName());
sb.append(" ");
sb.append(stu.getMark());
sb.append("分");
sb.append(" ");
sb.append("亲您的成绩鉴定为:");
if (stu.getMark() < 60) {
sb.append("不及格啊亲,要再接再励");
} else {
sb.append("恭喜你及格了,渡过了鬼门关");
}
System.out.println(sb);
}

public static void main(String[] args) {
show(new Student("林依晨",65));
show(new Student("阳光",58));
}

}
liulxd 2011-08-06
  • 打赏
  • 举报
回复
我之后试着写了一个,不过不知道是不是越来越复杂了。。。杯具了

public class TestStudentMod
{
public static void main(String[] args)
{
String[] stu=new String[]{"stu1","stu2"};
Student stu1=new Student();
stu1.name="阳光";
stu1.mark=58;
Student stu2=new Student();
stu2.name="林依晨";
stu2.mark=65;
int[] a=new int[]{stu1.mark,stu2.mark};
String[] b=new String[2];


for(int i=0;i<a.length;i++)
{
if (a[i]<60)
{
b[i]="不及格啊亲,要再接再励";

}
else
{
b[i]="恭喜你及格了,渡过了鬼门关";
}
}

for(int i=0;i<stu.length;i++)
{
switch (i)
{
case 0:
stu1.show(b[0]);
break;
case 1:
stu2.show(b[1]);
break;
}

}

}
}

因为涉及到多个人名的集合,所以 我考虑用数组
原本以为用stu[i].show(b[i]) 这样的办法来 不过好像不行

对于大量人名的话,这个程序也不见的简洁了。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧