학생 정보 입력 정렬 분할 실험에 대한 총결
사고방식: 1.Studen 클래스 만들기, name, score 만들기 및 메서드 관련
2.StudentTest 클래스를 만들고 학생 정보를 입력합니다.
3.객체 속성에 대한 비교입니다.여기에서 나는 대상 수조로 승차 출력을 실현한다.(구체적으로 코드를 보십시오.)
사실 대상 속성의 크기를 비교하는 데는 Comparator 인터페이스가 있습니다.구체적으로 보십시오http://blog.csdn.net/x_zhaohu/article/details/51020262.
코드 현실:
1..Studen 클래스 만들기, name, score 만들기 및 메서드 관련
package com.xingzhaohu.test;
/**
* @ClassName Student
* @Description TODO
* @author XingZhaohu [email protected]
* @date 2016-4-11 7:26:16
*/
public class Student {
private String name;
private double score;
public Student(){
}
public Student(String name,double score){
this.name = name;
this.score = score;
}
@Override
public String toString(){
return "name="+this.getName()+" score="+this.getScore();
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the score
*/
public double getScore() {
return score;
}
/**
* @param score the score to set
*/
public void setScore(double score) {
this.score = score;
}
}
2.StudentTest 클래스를 만들고 학생 정보를 입력합니다.객체 속성에 대한 비교입니다.여기에서 나는 대상 수조로 승차 출력을 실현한다.
package com.xingzhaohu.test;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println(" :");
int count = in.nextInt();//
Student[] students = new Student[count];
int i = 0;
while(i<count){
System.out.println(" :");
String name = in.next();//in.nextLine();
double score = in.nextDouble();
students[i++] = new Student(name,score);
}
for(i=0;i<students.length;i++){
for(int j=i+1;j<students.length;j++){
Student temp = new Student();
if(students[i].getScore()>students[j].getScore()){
System.out.println(students[i].getScore());
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
for(Student s : students)
System.out.println(s.toString());
}
}
② 요구 사항 충족:
1.다음 형식으로 문자열을 입력합니다.
유비, 유비, 201822036772016-04-12 13:41:58
관우,관우,,201822036662016-04-12 13:42:58
장비, 장비, 201822036882016-04-12 13:43:58
2.Student 클래스, 속성:name,number,date,를 만듭니다.문자열 분할을 Student에 기록합니다.
3.그리고 학호의 승차순에 따라 출력한다.(이곳에서는 Comparator 인터페이스를 실현하고compare를 다시 쓰는 방법으로 승차순 출력을 실현한다)
아이디어:
1.Student 클래스를 만들고, 속성을 만들고, 여러 가지 방법을 다룹니다.(가장 중요한 것은 구조 방법)
2.(대상을 향한 사상을 더욱 잘 이해하기 위해) InputMessage 클래스를 만들어 분할을 처리하고 Student의 대상을 만든다.
3.Comparator 인터페이스를 구현하는 Compare 클래스를 만들고 compare () 방법을 다시 씁니다.
4.StudentMessage 클래스 (main () 방법 포함) 를 만들고main () 방법에서Collection을 호출합니다.sort();정렬이 이루어집니다.
코드 구현:
1.Student 클래스를 만들고, 속성을 만들고, 여러 가지 방법을 다룹니다.
class Student{
private String name;
private long number;//
private String date;
public Student(){
}
public Student(String name,long number,String date){
this.name = name;
this.number = number;
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getNumber() {
return number;
}
public void setNumber(long number) {
this.number = number;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String toString(){
return "name = "+this.getName()+" number = "+this.getNumber()+" date = "+this.getDate();
}
}
2. 분할을 처리하고 Student의 대상을 만드는 InputMessage 클래스를 만듭니다.스트링과 롱의 전환에 관한 문제입니다.
class InputMessage{
private String message;
public InputMessage(String message){
this.message = message;
}
public Student inputMessage(){
String[] messages = this.message.split(",|,");//
/**
* int msg = Integer.parseInt(messages[3]);
* long msg = Integer.parseInt(messages[3]);
* :long max value:9223372036854775807
* :
*/
long msg = Long.parseLong(messages[3]);
Student student = new Student(messages[1],msg,messages[4]);
return student;
}
}
3. Comparaotr 인터페이스를 구현하는 Compare 클래스
class Compare implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2) {
// TODO
if(o1.getNumber()>o2.getNumber())
return 1;
else if(o1.getNumber()>o2.getNumber())
return -1;
else
return 0;
}
4. 테스트 클래스 구현
테스트를 할 때 힘을 아끼기 위해 학생의 수를 입력하지 않고 직접 값을 부여했다.직접 복사를 토대로 수정하고 직접 입력하세요.잘못 보고할 거야.
package com.xingzhaohu.ch05;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/**
* @ClassName StudentsMessage
* @Description , ,
* @author XingZhaohu [email protected]
* @date 2016-4-11 11:47:52
*/
public class StudentsMessage {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println(" :");
int stuCount = in.nextInt();
Student[] students = new Student[100];// 。
int i=1;
List<Student> list = new ArrayList();
while(i<=stuCount){
System.out.println(" :");
//in = new Scanner(System.in);
String value = in.nextLine();
InputMessage inputmessage = new InputMessage(value);
students[i] = inputmessage.inputMessage();
list.add(students[i++]);
}
Compare compare = new Compare();
Collections.sort(list,compare);
for(Student s : (List<Student>)list){
System.out.println(s.toString());
}
}
}
참으로 new를 얻는 자는 천하를 얻는다.바로 관건적인 코드입니다. 해결되었습니다. 여기서 두 형님의 도움에 감사를 드려야 합니다. 정확한 것은 다음과 같습니다.
package com.xingzhaohu.ch05;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/**
* @ClassName StudentsMessage
* @Description , ,
* @author XingZhaohu [email protected]
* @date 2016-4-11 11:47:52
*/
public class StudentsMessage {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println(" :");
int stuCount = in.nextInt();
Student[] students = new Student[100];// 。
int i=1;
List<Student> list = new ArrayList();
while(i<=stuCount){
System.out.println(" :");
in = new Scanner(System.in);// !
String value = in.nextLine();
InputMessage inputmessage = new InputMessage(value);
students[i] = inputmessage.inputMessage();
list.add(students[i++]);
}
Compare compare = new Compare();
Collections.sort(list,compare);
for(Student s : (List<Student>)list){
System.out.println(s.toString());
}
}
}
문제 발생:
1.student 빈 값이 명시적인 매개 변수로 전송되어 프로그램이 잘못 보고되고 해결 방법은 Student를 데이터 형식으로 만드는 방법으로 실례화된 대상을 되돌려줍니다.
2.int 및 String long 및 String 변환각자 방법이 있다.
3. 학생 수를 입력하고 그룹 범위를 초과하여 다시 new 입력 흐름;
4.객체의 배열을 선언할 때 배열의 크기는 변수를 사용할 수 있지만그러나 일정한 값을 부여해야 한다. 이 부분을 나는 아직 이해하지 못했다. 만약에 수조의 크기가 변수라면 클래스가 불러올 때 클래스 대상의 수조에 공간을 분배하지 않거나 적게 분배하지 않을 것이라고 추측했다.미리 성명할 수밖에 없다.(해결 예정)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.