📄 testequals.java
字号:
package edu.yinhe.mis.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import edu.yinhe.mis.dto.Reply_cardDTO;
/**
* 定义整型变量in 并规定它的值只能为0,1或者2
* 0表示考生没选中一个正确选项;1表示考生至少选中一个正确选项但有漏选无错选;2表示考生答案与标准答案一致
* @author 何亮
*
*/
public class Testequals {
/**
* 考生答案与标准答案的长度相等时
* @param obj
* @return in
*/
public int eq(Object obj) {
Reply_cardDTO rdto=new Reply_cardDTO();
rdto=(Reply_cardDTO) obj;
String a=rdto.getStandard_key();
String b=rdto.getStudent_key();
int in=0;
if(a.length()==2){//标准答案的选项为2个
char[] c=new char[2];
for(int i=0;i<b.length();i++){
c[i]= b.charAt(i);
}
// System.out.println(c);
Character c0=c[0];
Character c1=c[1];
if(c0==c1){//考生选取二个一样的答案
char[] ch={c[0]};//去掉一个答案,转化为考生只选一个答案
rdto.setStudent_key(String.valueOf(ch));//调用co()方法
Testequals tq=new Testequals();
in=tq.co(rdto);
// System.out.println(ch);
}else{
/**
* 将考生答案按字典顺序排序
*/
if(c0.hashCode()<c1.hashCode()){
c[0]=c0;
c[1]=c1;
}
else{
c[0]=c1;
c[1]=c0;
}
}
if(a.equals(String.valueOf(c))){
in=2;
// System.out.println("成功");
}else{
// System.out.println("失败");
}
}
if(a.length()==3){//标准答案的选项为3个
char[] c=new char[3];
for(int i=0;i<b.length();i++){
c[i]= b.charAt(i);
}
// System.out.println(c);
Character c0=c[0];
Character c1=c[1];
Character c2=c[2];
if(c0==c1&&c1==c2){//考生选取三个一样的答案
char[] ch={c[0]};//去掉二个答案,转化为考生只选一个答案
rdto.setStudent_key(String.valueOf(ch));//调用co()方法
Testequals tq=new Testequals();
in=tq.co(rdto);
// System.out.println(ch);
}else{
if(c0==c1||c0==c2||c1==c2){//考生答案中有二个一样的选项
char[] ch1=new char[2];
// System.out.println("考生选取重复的答案");
for(int i=0;i<b.length();i++){//去掉一个重复答案
c[i]= b.charAt(i);
Character ci=c[i];
for(int j=0;j<b.length();j++){
c[j]= b.charAt(j);
Character cj=c[j];
if(i!=j&&ci.hashCode()==cj.hashCode()){
char[] ch={c[2-j],c[Math.abs(j-1)]};
ch1=ch;
// System.out.println(ch);
}
}
}
rdto.setStudent_key(String.valueOf(ch1));//调用co()方法
Testequals tq=new Testequals();
in=tq.co(rdto);
// System.out.println(c);
}else{//考生选取的答案中的选项都不同
/**
* 将考生答案按字典顺序排序
*/
if(c0.hashCode()<c1.hashCode()){
c[0]=c0;
c[1]=c1;
c0=c[0];
c1=c[1];
}else{
c[0]=c1;
c[1]=c0;
c0=c[0];
c1=c[1];
}if(c1.hashCode()<c2.hashCode()){
c[1]=c1;
c[2]=c2;
c1=c[1];
c2=c[2];
}else{
c[1]=c2;
c[2]=c1;
c[1]=c2;
c[2]=c1;
c1=c[1];
c2=c[2];
}if(c0.hashCode()<c1.hashCode()){
c[0]=c0;
c[1]=c1;
c0=c[0];
c1=c[1];
}else{
c[0]=c1;
c[1]=c0;
c0=c[0];
c1=c[1];
}
if(a.equals(String.valueOf(c))){
in=2;
// System.out.println("成功");
}else{
// System.out.println("失败");
}
// System.out.println(c);
}
}
}
if(a.length()==4){//标准答案的选项为4个
char[] c=new char[4];
for(int i=0;i<b.length();i++){
c[i]= b.charAt(i);
}
// System.out.println(c);
Character c0=c[0];
Character c1=c[1];
Character c2=c[2];
Character c3=c[3];
if(c0!=c1&&c0!=c2&&c0!=c3&&c1!=c2&&c1!=c3&&c2!=c3){//考生选取四个完全不一样的答案
in=2;
}else{//考生漏选
in=1;
}
}
return in;
}
/**
* 考生答案的选项比标准答案的选项少
* @param obj
* @return in
*/
public int co(Object obj) {
Reply_cardDTO rdto=new Reply_cardDTO();
rdto=(Reply_cardDTO) obj;
String a=rdto.getStandard_key();
String b=rdto.getStudent_key();
int in=0;
if(b.length()==1){
if(a.indexOf(b)==-1){//标准答案的选项中没有考生的选项
in=0;
}else{
in=1;
}
}
if(b.length()==2){
char[] c=new char[2];
for(int i=0;i<b.length();i++){
c[i]= b.charAt(i);
}
if(c[0]!=c[1]){
if(a.indexOf(c[0])!=-1&&a.indexOf(c[1])!=-1){//标准答案的选项中没有考生的选项
in=1;
}
}
}
return in;
}
/**
* 考生答案的选项比标准答案的选项多
* @param obj
* @return in
*/
public int cy(Object obj) {
Reply_cardDTO rdto=new Reply_cardDTO();
rdto=(Reply_cardDTO) obj;
String a=rdto.getStandard_key();
String b=rdto.getStudent_key();
int in=0;
if(b.length()==3){//考生答案的选项为3个
char[] c=new char[3];
for(int i=0;i<b.length();i++){
c[i]= b.charAt(i);
}if(c[0]==c[1]&&c[1]==c[2]){
if(a.indexOf(c[0])!=-1){
in=1;
}
}else{
if(a.indexOf(c[0])!=-1&&a.indexOf(c[1])!=-1&&a.indexOf(c[2])!=-1){//标准答案的选项中没有考生的选项
in=2;
}else{
in=0;
}
}
}
if(b.length()==4){//考生答案的选项为4个
char[] c=new char[4];
for(int i=0;i<b.length();i++){
c[i]= b.charAt(i);
}
if(c[0]==c[1]&&c[1]==c[2]&&c[2]==c[3]){
if(a.indexOf(c[0])!=-1){
in=1;
}
}
if(a.length()==2){
if(a.indexOf(c[0])!=-1&&a.indexOf(c[1])!=-1&&a.indexOf(c[2])!=-1&&a.indexOf(c[3])!=-1){//标准答案的选项中没有考生的选项
in=2;
}else{
in=0;
}
}
if(a.length()==3){
char[] d=new char[3];
for(int i=0;i<b.length();i++){
d[i]= a.charAt(i);
}
if(a.indexOf(c[0])!=-1&&a.indexOf(c[1])!=-1&&a.indexOf(c[2])!=-1&&a.indexOf(c[3])!=-1){
if(b.indexOf(d[0])!=-1&&b.indexOf(d[1])!=-1&&b.indexOf(d[2])!=-1){
in=2;
}else{
in=1;
}
}
}
}
return in;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -