在不确定对象的数目情况下,如何确定无限new对象呢?
首先,创造这个对象必须具备4个属性,姓名 和三个成绩。而姓名和三个成绩也必须都是由键盘读入。而且NEW得对象要装入集合中。
我现在写到这里已经卡住了,不知道如何往下写了。
一下是我的代码,希望高手指点一下。如何实现无限循环创建对象!
import java.util.*;
import java.io.*;
class Student {
private String name;
private int maths;
private int english;
private int java;
private int resSum;
public String toString() {
return "姓名 : "+name+"\r\n数学成绩: "+maths+"\r\n英语成绩: "+english+"\r\nJava成绩: "+java+"\r\n总分:"+resSum;
}
Student(String name, int maths, int english, int java) {
this.name = name;
this.maths = maths;
this.english = english;
this.java = java;
resSum = maths+english+java;
}
public int resSum() {
return resSum = maths+english+java;
}
public String getName() {
return name;
}
public int getMaths() {
return maths;
}
public int getEnglish() {
return english;
}
public int getJava() {
return java;
}
public void setName(String name) {
this.name = name;
}
public void setMaths(int maths) {
this.maths = maths;
}
public void setEnglish(int english) {
this.english = english;
}
public void setJava(int java) {
this.java = java;
} }
class Com implements Comparator<String>{
public int compare(String s1,String s2){ return s1.compareTo(s2);
}
}class inputRes {
String name;
int maths,english,java;
public String inputName() {
System.out.println("请输入学生姓名");
name = inputstring();
return name;
}
public int inputmath() {
System.out.println("请输入数学成绩");
maths = resinput();
return maths;
}
public int inputenglish() {
System.out.println("请输入英语成绩");
english = resinput();
return english;
}
public int inputjava() {
System.out.println("请输入Java成绩");
java = resinput();
return java;
}
public int resinput(){
BufferedReader i = null;
String j = null;
int s = 0;
while(true) {
try{
i = new BufferedReader(new InputStreamReader(System.in));
j = i.readLine();
s = Integer.parseInt(j);
}catch(IOException e){}
catch(NumberFormatException se) {
System.out.println("输入错误!不能输入非数字类型");
continue;
}
return s;
}
}
public String inputstring(){
BufferedReader i = null;
String j = null;
i = new BufferedReader(new InputStreamReader(System.in));
try{
j = i.readLine();
}catch(IOException e){}
return j;
}}public class Result {
public static void main(String args[]) throws Exception{
System.out.println("请设置第一个学生的成绩");
TreeMap<String,Student>m = new TreeMap<String,Student>(new Com());
inputRes in = new inputRes();
Student stu1 = new Student(in.inputName(),in.inputmath(),in.inputenglish(),in.inputjava());
System.out.println("请设置第二个学生的成绩");
Student stu2 = new Student(in.inputName(),in.inputmath(),in.inputenglish(),in.inputjava());
System.out.println(stu1);
System.out.println(stu2);
m.put("0001",stu1);
m.put("0002",stu2);
Set<String> se = m.keySet();
Iterator<String> iter = se.iterator();
System.out.println("录入学生人数为:"+se.size()+"人"); FileWriter fw = new FileWriter("F:\\学生成绩表.txt");
BufferedWriter bw = new BufferedWriter(fw);
while(iter.hasNext()) {
String key = iter.next();
Student value = m.get(key);
bw.write("学生ID :"+key);
bw.newLine();
bw.write(value.toString());
bw.newLine();
bw.flush(); // System.out.println(key+":"+value);
} bw.close();
}
}
首先,创造这个对象必须具备4个属性,姓名 和三个成绩。而姓名和三个成绩也必须都是由键盘读入。而且NEW得对象要装入集合中。
我现在写到这里已经卡住了,不知道如何往下写了。
一下是我的代码,希望高手指点一下。如何实现无限循环创建对象!
import java.util.*;
import java.io.*;
class Student {
private String name;
private int maths;
private int english;
private int java;
private int resSum;
public String toString() {
return "姓名 : "+name+"\r\n数学成绩: "+maths+"\r\n英语成绩: "+english+"\r\nJava成绩: "+java+"\r\n总分:"+resSum;
}
Student(String name, int maths, int english, int java) {
this.name = name;
this.maths = maths;
this.english = english;
this.java = java;
resSum = maths+english+java;
}
public int resSum() {
return resSum = maths+english+java;
}
public String getName() {
return name;
}
public int getMaths() {
return maths;
}
public int getEnglish() {
return english;
}
public int getJava() {
return java;
}
public void setName(String name) {
this.name = name;
}
public void setMaths(int maths) {
this.maths = maths;
}
public void setEnglish(int english) {
this.english = english;
}
public void setJava(int java) {
this.java = java;
} }
class Com implements Comparator<String>{
public int compare(String s1,String s2){ return s1.compareTo(s2);
}
}class inputRes {
String name;
int maths,english,java;
public String inputName() {
System.out.println("请输入学生姓名");
name = inputstring();
return name;
}
public int inputmath() {
System.out.println("请输入数学成绩");
maths = resinput();
return maths;
}
public int inputenglish() {
System.out.println("请输入英语成绩");
english = resinput();
return english;
}
public int inputjava() {
System.out.println("请输入Java成绩");
java = resinput();
return java;
}
public int resinput(){
BufferedReader i = null;
String j = null;
int s = 0;
while(true) {
try{
i = new BufferedReader(new InputStreamReader(System.in));
j = i.readLine();
s = Integer.parseInt(j);
}catch(IOException e){}
catch(NumberFormatException se) {
System.out.println("输入错误!不能输入非数字类型");
continue;
}
return s;
}
}
public String inputstring(){
BufferedReader i = null;
String j = null;
i = new BufferedReader(new InputStreamReader(System.in));
try{
j = i.readLine();
}catch(IOException e){}
return j;
}}public class Result {
public static void main(String args[]) throws Exception{
System.out.println("请设置第一个学生的成绩");
TreeMap<String,Student>m = new TreeMap<String,Student>(new Com());
inputRes in = new inputRes();
Student stu1 = new Student(in.inputName(),in.inputmath(),in.inputenglish(),in.inputjava());
System.out.println("请设置第二个学生的成绩");
Student stu2 = new Student(in.inputName(),in.inputmath(),in.inputenglish(),in.inputjava());
System.out.println(stu1);
System.out.println(stu2);
m.put("0001",stu1);
m.put("0002",stu2);
Set<String> se = m.keySet();
Iterator<String> iter = se.iterator();
System.out.println("录入学生人数为:"+se.size()+"人"); FileWriter fw = new FileWriter("F:\\学生成绩表.txt");
BufferedWriter bw = new BufferedWriter(fw);
while(iter.hasNext()) {
String key = iter.next();
Student value = m.get(key);
bw.write("学生ID :"+key);
bw.newLine();
bw.write(value.toString());
bw.newLine();
bw.flush(); // System.out.println(key+":"+value);
} bw.close();
}
}
首先 把类简化
class A{
int i;
public A(int i){
this.i=i;
}
}
然后 就能关注本质问题 怎么样无限new对象呢?
先new一个list 再new一个scanner sc String s=1;
while(!"exit".equals(s=sc.readLine)){
list.add(new A(Integer.parseInt(s)));
}
当用户输入exit时结束 大概是这样 不知道有没有错误
所以我把全部代码贴出来,我想是不是应该全盘考虑,所以贴了全部代码。
最后面改一下就行了
参照前面写的while(true)来创建新类
比如改成int i = 0;
while(true){
System.out.println("请设置第"+ i + "个学生的成绩");
TreeMap<String,Student>m = new TreeMap<String,Student>(new Com());
inputRes in = new inputRes();//记得类名要大写
Student stu = new Student(in.inputName(),in.inputmath(),in.inputenglish(),in.inputjava());
System.out.println(stu);
m.put(i + "", stu);
//这里加一句
if(输入退出命令){
break;
}
}
Set<String> se = m.keySet();
Iterator<String> iter = se.iterator();
System.out.println("录入学生人数为:"+se.size()+"人");
while(true){
System.out.println("请设置第"+ i + "个学生的成绩");
TreeMap<String,Student>m = new TreeMap<String,Student>(new Com());
inputRes in = new inputRes();//记得类名要大写
Student stu = new Student(in.inputName(),in.inputmath(),in.inputenglish(),in.inputjava());
System.out.println(stu);
m.put(i + "", stu);
i++;
//这里加一句
if(输入退出命令){
break;
}
}
Set<String> se = m.keySet();
Iterator<String> iter = se.iterator();
System.out.println("录入学生人数为:"+se.size()+"人");
m.put(i + "", stu); 这个i能否传进去啊?
我复制了你的代码,正在改。不知道能否成功哈
import java.util.List;
import java.util.Scanner;class Student {
private String name;
private int maths;
private int english;
private int java;
private int resSum;
public String toString() {
return "姓名 : "+name+"\r\n数学成绩: "+maths+"\r\n英语成绩: "+english+"\r\nJava成绩: "+java+"\r\n总分:"+resSum;
}
Student(String name, int maths, int english, int java) {
this.name = name;
this.maths = maths;
this.english = english;
this.java = java;
resSum = maths+english+java;
}
public int resSum() {
return resSum = maths+english+java;
}
public String getName() {
return name;
}
public int getMaths() {
return maths;
}
public int getEnglish() {
return english;
}
public int getJava() {
return java;
}
public void setName(String name) {
this.name = name;
}
public void setMaths(int maths) {
this.maths = maths;
}
public void setEnglish(int english) {
this.english = english;
}
public void setJava(int java) {
this.java = java;
}
}
public class StudentTest{
public static void main(String[] args) {
List<Student> sl=new ArrayList<Student>();
Scanner sc=new Scanner(System.in);
String s="";
s=sc.nextLine();
try {
while(!"exit".equals(s)){
Student st=new Student(s,Integer.parseInt(sc.nextLine()),Integer.parseInt(sc.nextLine()),Integer.parseInt(sc.nextLine()));
sl.add(st);
s=sc.nextLine();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("输入错误!");
System.exit(-1);
}
for(Student ss:sl){
System.out.println(ss);
}
}
}
键盘输入 学生 名字 和三个科目的成绩
然后按总分的大小顺序排列 输出到 一个.txt文件上
import java.util.*;
import java.io.*;
class Student implements Comparable<Student>{
private int sx;
private int yw;
private int yy;
private String name;
private int sum;
Student (String name,int sx,int yw,int yy) {
this.name = name;
this.sx = sx;
this.yw = yw;
this.yy = yy;
sum = sx+yw+yy;
}
int getSum() {
return sum;
}
String getName() {
return name;
}
public String toString() {
return getName()+"的总成绩是"+getSum();
}
public int compareTo(Student s) {
if (this.sum<s.sum) {
return -1;
} else if(this.sum==s.sum) {
return this.name.compareTo(s.name);
} else return 1;
}
}
class GetList {
static ArrayList<Student> getList() throws Exception{
StringBuffer sb = new StringBuffer();
int num = 0;
InputStream is = System.in;
ArrayList<Student> al = new ArrayList<Student>();
while(true) {
num = is.read();
if(num=='\r') continue;
if(num=='\n') {
String str = sb.toString();
if(str.equals("over")) break;
String [] s = str.split(",",4);
al.add (new Student(s[0],Integer.parseInt(s[1]),Integer.parseInt(s[2]),Integer.parseInt(s[3])));
sb.delete(0,sb.length());
} else {
sb.append((char)num);
}
}
return al;
}
}
class MyWrite {
static void myWrite(ArrayList<Student> al)throws Exception {
FileWriter fw = new FileWriter("学生信息.txt");
BufferedWriter bw = new BufferedWriter(fw);
for(Iterator iter = al.iterator();iter.hasNext();) {
bw.write(iter.next().toString());
bw.newLine();
}
bw.close();
}
}
public class Test2 {
public static void main (String [] args) throws Exception {
ArrayList<Student> al = new ArrayList<Student>();
al = GetList.getList();
Collections.sort(al);
MyWrite.myWrite(al);
}
}
e:\Test\IO>java Test2
Lili,78,90,89
Bob,100,90,98
Billy,67,80,78
Tom,67,89,90
over学生信息.txt
Billy的总成绩是225
Tom的总成绩是246
Lili的总成绩是257
Bob的总成绩是288