我一直在尝试打印我在代码中要求的数组中的所有信息,但是一旦用户不想评估更多的人,我就找不到一种方法在表中打印所有信息。
我试着使用一些我在这里看到的解决方案,但至少我还不能理解它们。
我所需要的只是保存在请求的多个数组上的信息 JOptionPane
所有这些都保存并打印到一个列表中。
import javax.swing.*;
import java.awt.*;
public class ProyectoFinal extends JFrame {
public static void main(String[] args) {
// TODO Auto-generated method stub
int opcfinal = 0;
int n = 0; //SE DETERMINA EL TAMAñO DEL ARREGLO, PARA ALMACENAR LOS DATOS DE NOMBRE Y CEDULA
String[] name = new String[1000]; // SE CREA UN ARREGLO PARA GUARDAR LOS NOMBRES CON PLAZAS ILIMATADAS PARA NO TENER PROBLEMAS DE COMPILACION
String[] cedula = new String[1000]; // SE CREA UN ARREGLO PARA GUARDAR LOS NUMEROS DE CEDULA CON PLAZAS ILIMTADAS PARA NO TENER PROBLEMAS DE COMPILACION
int[] puntos = new int[1000]; // SE CREA EL ARREGLO QUE ALMACENARA LOS PUNTOS DE LOS ESTUDIANTES EVALUADOS
int[] rescorrect = new int[1000]; // SE CREA EL ARREGLO QUE GUARDARA LA CANTIDAD DE RESPUESTAS CORRECTAS QUE TUVO EL ESTUDIANTE
int[] status = new int[1000]; // SE GUARDA EL VALOR DE TIPO INTEGER QUE DETERMINARA SI EL TEXTO A MOSTRAR SERA APROBADO/RECHAZADO
do { // SE CREA UN CICLO REPETITIVO QUE EVALUE LA OPCION DEL USUARIO EN EL SHOWCONFIRMDIALOG
name[n] = JOptionPane.showInputDialog(null, "Escriba su nombre: ","Instituto Superior Informático Panameño", JOptionPane.QUESTION_MESSAGE);// SE PIDE POR TECLADO EL NOMBRE
cedula[n] = JOptionPane.showInputDialog(null, "Digite su cedula", "Instituto Superior Informático Panameño", JOptionPane.QUESTION_MESSAGE);// SE PIDE POR TECLADO LA CEDULA
for (int i = 0; i<1; i++) { // SE CREA UN CICLO REPETITIVO CON AUMENTO DE 1 PARA EVALUAR LAS PREGUNTAS UNA SOLA VEZ POR ESTUDIANTE Y GUARDAR LOS VALORES DENTRO DE LOS ARREGLOS DECLARADOS
int p1 = Integer.parseInt(JOptionPane.showInputDialog(null, "En programacion, una variable es:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Informacion Almacenada \n2) Un numero \n3) Un Contador", "Pregunta 1", JOptionPane.QUESTION_MESSAGE));
if (p1== 1) { // SE CREA UN CONDICIONAL QUE EVALUA SI LA RESPUESTA ES CORRECTA
puntos[i] = 6 + puntos[i]; // SE AUMENTA LOS PUNTOS EN CASO DE LA RESPUESTA SER CORRECTA
rescorrect[i] = 1 + rescorrect[i]; // SE ALMACENA LA INFORMACION DE QUE EL ESTUDIANTE TUVO UNA RESPUESTA CORRECTA Y SE SUMA A LAS ANTERIORES PARA LLEVAR UN CONTROL.
}else if(p1!=1) { // Y SE CREA LA CONDICION ACERCA DE QUE HACER EN CASO DE QUE LA RESPUESTA SEA INCORRECTA
puntos[i] = puntos[i]; //DE TENER UNA RESPUESTA EQUIVOCADA, LOS PUNTOS SE QUEDAN COMO ESTABAN Y LA CANTIDAD DE RESPUESTAS CORRECTAS NO AUMENTA.
}
int p2 = Integer.parseInt(JOptionPane.showInputDialog(null, "Que es un hacker?:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Un delincuente informatico \n2) Un programa de Facebook \n3) Experto en Tecnologia ", "Pregunta 2", JOptionPane.QUESTION_MESSAGE));
if (p2==3) {
puntos[i] = 6 + puntos[i];
rescorrect[i] = 1 + rescorrect[i];
}else if(p2!=3) {
puntos[i] = puntos[i];
}
int p3 = Integer.parseInt(JOptionPane.showInputDialog(null, "Que es un malware? :" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Software Malicioso \n2) Virus de Celular \n3) Un Trino de un Politico en Campaña ", "Pregunta 3", JOptionPane.QUESTION_MESSAGE));
if (p3== 1) {
puntos[i] = 6 + puntos[i];
rescorrect[i] = 1 + rescorrect[i];
}else if(p3!=1) {
puntos[i] = puntos[i];
}
int p4 = Integer.parseInt(JOptionPane.showInputDialog(null, "Que es Python? :" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Una Serpiente \n2) Un Lenguaje de Programacion \n3) Un arma ", "Pregunta 4", JOptionPane.QUESTION_MESSAGE));
if (p4== 2) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 6 + puntos[i];
}else if(p4!=2) {
puntos[i] = puntos[i];
}
int p5 = Integer.parseInt(JOptionPane.showInputDialog(null, "La Ram es:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Capacidad de almacenamiento \n2) Chip de ayuda al Procesador \n3) Rama de la tecnologia que estudia el hardware ", "Pregunta 5", JOptionPane.QUESTION_MESSAGE));
if (p5== 2) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 6 + puntos[i];
}else if(p5!=2) {
puntos[i] = puntos[i];
}
int p6 = Integer.parseInt(JOptionPane.showInputDialog(null, "Que es minecraft?" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) VideoJuego de supervivencia \n2) Metodo chino de almacenamiento de datos \n3) Bomba atomica ", "Pregunta 6", JOptionPane.QUESTION_MESSAGE));
if (p6== 1) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 6 + puntos[i];
}else if(p6!=1) {
puntos[i] = puntos[i];
}
int p7 = Integer.parseInt(JOptionPane.showInputDialog(null, "Que es el machine learning:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Enseñar a las maquinas a hacer cosas \n2) Programar maquinas para que usen algoritmos \n3) Todo aquello que podemos aprender de una maquina ", "Pregunta 7", JOptionPane.QUESTION_MESSAGE));
if (p7== 2) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 6 + puntos[i];
}else if(p7!=2) {
puntos[i] = puntos[i];
}
int p8 = Integer.parseInt(JOptionPane.showInputDialog(null, "Que es Realidad Aumentada:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Tecnologia de inmersion \n2) Protocolo de Mejora a la vista humana \n3) Vision de un entorno fisico al mundo real, a traves de un dispositivo ", "Pregunta 8", JOptionPane.QUESTION_MESSAGE));
if (p8== 3) {
puntos[i] = 6 + puntos[i];
rescorrect[i] = 1 + rescorrect[i];
}else if(p8!=3) {
puntos[i] = puntos[i];
}
int p9 = Integer.parseInt(JOptionPane.showInputDialog(null, "Para que se utilizan los Bit-Coins:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Apostar en Casinos \n2) Realizar Pagos Online de forma segura \n3) Comprar entradas de cine ", "Pregunta 9", JOptionPane.QUESTION_MESSAGE));
if (p9== 2) {
puntos[i] = 6 + puntos[i];
rescorrect[i] = 1 + rescorrect[i];
}else if(p9!=2) {
puntos[i] = puntos[i];
}
int p10 = Integer.parseInt(JOptionPane.showInputDialog(null, "Que es un String:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Una variable de tipo cadena \n2) Una cuerda \n3) Un culumpio ", "Pregunta 10", JOptionPane.QUESTION_MESSAGE));
if (p10== 1) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 6 + puntos[i];
}else if(p10!=1) {
puntos[i] = puntos[i];
}
int p11 = Integer.parseInt(JOptionPane.showInputDialog(null, "El orden de los factores no altera:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) La Formula Cuadratica \n2) El Producto \n3) La Division ", "Pregunta 11", JOptionPane.QUESTION_MESSAGE));
if (p11== 2) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p11!=2) {
puntos[i] = puntos[i];
}
int p12 = Integer.parseInt(JOptionPane.showInputDialog(null, "En la jerarquia de Operadores, cual de los siguientes signos tiene prioridad?:" // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) * \n2) - \n3) + ", "Pregunta 12", JOptionPane.QUESTION_MESSAGE));
if (p12== 1) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p12!=1) {
puntos[i] = puntos[i];
}
int p13 = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuanto vale Pi?: " // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) 3.1315 \n2) 3.1416 \n3) 3.1415 ", "Pregunta 13", JOptionPane.QUESTION_MESSAGE));
if (p13== 3) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p13!=3) {
puntos[i] = puntos[i];
}
int p14 = Integer.parseInt(JOptionPane.showInputDialog(null, "Como se denomina un Triangulo con sus 3 lados iguales: " // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Isosceles \n2) Escaleno \n3) Equilatero ", "Pregunta 14", JOptionPane.QUESTION_MESSAGE));
if (p14== 3) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p14!=3) {
puntos[i] = puntos[i];
}
int p15 = Integer.parseInt(JOptionPane.showInputDialog(null, "Como se denomina un Triangulo con sus 3 lados diferentes: " // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Isosceles \n2) Escaleno \n3) Equilatero ", "Pregunta 15", JOptionPane.QUESTION_MESSAGE));
if (p15== 2) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p15!=2) {
puntos[i] = puntos[i];
}
int p16 = Integer.parseInt(JOptionPane.showInputDialog(null, "What DOB stands for?: " // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Date of Birth \n2) Date of Bird \n3) Donuts Online Business ", "Pregunta 16", JOptionPane.QUESTION_MESSAGE));
if (p16== 1) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p16!=1) {
puntos[i] = puntos[i];
}
int p17 = Integer.parseInt(JOptionPane.showInputDialog(null, "What is the plural form for Child?: " // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Childs \n2) Childes \n3) Children ", "Pregunta 17", JOptionPane.QUESTION_MESSAGE));
if (p17== 3) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p17!=3) {
puntos[i] = puntos[i];
}
int p18 = Integer.parseInt(JOptionPane.showInputDialog(null, "English Language haves it's origins from: " // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) United States \n2) German \n3) British ", "Pregunta 18", JOptionPane.QUESTION_MESSAGE));
if (p18== 2) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p18!=2) {
puntos[i] = puntos[i];
}
int p19 = Integer.parseInt(JOptionPane.showInputDialog(null, "To be Verb for He: " // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) Is \n2) are \n3) Am ", "Pregunta 19", JOptionPane.QUESTION_MESSAGE));
if (p19== 1) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p19!=1) {
puntos[i] = puntos[i];
}
int p20 = Integer.parseInt(JOptionPane.showInputDialog(null, "What is TOEFL: " // SE PIDE LA RESPUESTA POR TECLADO SEGUN OPCIONES.
+ "\n1) English Test \n2) STD \n3) Cookie brand ", "Pregunta 20", JOptionPane.QUESTION_MESSAGE));
if (p20== 1) {
rescorrect[i] = 1 + rescorrect[i];
puntos[i] = 4 + puntos[i];
}else if(p20!=1) {
puntos[i] = puntos[i];
}
if (puntos[i]>=71) { // SE CREA LA CONDICIONAL PARA DETERMINAR SI EL ESTUDIANTE FUE APROBADO/RECHAZADO
status[i] = 1;
}else if(puntos[i]<71) {
status[i] = 0;
}
opcfinal = JOptionPane.showConfirmDialog(null, "Desea Continuar?"); //DETERMINA SI HAY OTRA PERSONA A EVALUAR O NO.
++n;
//ESTO CIERRA EL CICLO DE PREGUNTAS
}
} while(opcfinal == 0);
Object[][] info = {
{puntos[n],name[n],cedula[n],status[n]}
};
String[] header = {"Estudiante No","Nombre","Cedula","Puntos Obtenidos","Status"};
JTable table = new JTable(info, header);
Font font = new Font("Verdana", Font.PLAIN,12);
table.setFont(font);
table.setRowHeight(n);
JFrame frame = new JFrame();
frame.setSize(600,400);
frame.add(new JScrollPane(table));
frame.setVisible(true);
for (int i = 0; i < 1; i++) {
JOptionPane.showMessageDialog(null, puntos[i]);
}
}
}
1条答案
按热度按时间j9per5c41#
导言
因为这是一个老问题,所以我决定通过完全重新组织/重写op的代码来解决这个问题。
我创建了一个完整的gui。下面是一系列显示gui的图像。
这是gui的学生页面。这是学生输入姓名和学生id的地方,这个gui的大部分文本是西班牙语。当我抄写最后几个问题是英语时,我很惊讶。
这是gui的问答页面。加载到应用程序模型中的问题数就是将要询问的问题数。这些问题是按照它们加载到应用程序模型中的顺序提出的。答案是随机排列的。
学生通过选择右边的一个单选按钮来回答问题,然后左键单击continue按钮。
这是中间的问题之一。一共有20个问题。
测试完成后,学生返回学生小组。学生的分数返回到小组的底部。
要访问学生成绩秘密表,必须输入“111111”作为学生id号。
这是学生成绩的秘密表格。
解释
当我创建一个复杂的swing应用程序时,我使用model/view/controller模式。这种模式允许我将关注点分开,一次只关注应用程序的一个部分。
型号
我从创建应用程序模型开始。我创造了一个
Student
a级Question
班级,aProjectModel
班级。这三个类都是普通的javagetter/setter类。这个
ProjectModel
类是主要的应用模型。它包含一个java.util.List
的Student
示例和java.util.List
等级Question
示例。所有引用List
在本答案的其余部分,请参阅java.util.List
.这个
createQuestionsFactory
方法ProjectModel
类创建所有的测试问题。这个方法有127行长。通过创建Question
类和Question
例如,我们可以创建一个问题面板并重用它。我本可以引用正确的答案,而不是复制它,但我复制了正确的答案,这样代码就更容易验证和理解。一个真正的系统会有面板,用于输入测试和问题,将测试保存到数据库,以及检索测试。这个
Question
类由String
问题,aList
的String
可能的答案,aString
回答正确,并且int
价值观。我们将这些字段分组在一个类中,这样就不必单独跟踪这些值。一个问题的可能答案的数目不是固定的,尽管所有的问题都应该有相同数目的可能答案。如果问题有不同数量的可能答案,那么视图代码就必须更加复杂。
这个
Student
班级把属于学生的领域放在一起。当我们填充JTable
学生的分数。查看
视图由一个
JFrame
,与主JPanel
. 主要JPanel
使用CardLayout
从一个切换到另一个JPanel
另一个。三部曲
JPanels
你是学生吗JPanel
,一个问题JPanel
,还有一张tableJPanel
. 前两个下属JPanels
使用GridBagLayout
. 最后一个下属JPanel
使用BorderLayout
.这个
ProyectoFinal
课程以调用SwingUtilities
invokeLater
方法。此方法确保swing应用程序在事件调度线程上创建和执行swing组件。这个
ProyectoFinal
类构造函数创建ProjectModel
班级。通常,在创建视图之前先创建模型的示例。这个
run
方法ProyectoFinal
类创建JFrame
. 必须按此顺序调用这些方法。这个
createMainPanel
方法创建主JPanel
使用CardLayout
.这个
createStudentPanel
方法和步骤createQuestionPanel
方法创建它们的JPanel
使用GridBagLayout
. 这个createTablePanel
方法创建其JPanel
使用BorderLayout
.这个
updateQuestionPanel
以及updateTablePanel
方法更新问题JPanel
table呢JPanel
分别是。控制器
控制器类都是匿名的。我已经创建了4个类。
每个
JButton
具有匿名控制器类。这个actionListener
匿名控制器类的方法是更新应用程序模型和JPanel
切换到适当的JPanel
卡片。代码
下面是完整的可运行代码。最小,不是。