Java ArrayList

Iniciado por josephb401, 20 Noviembre 2015, 17:42 PM

0 Miembros y 2 Visitantes están viendo este tema.

josephb401

Saludos! estoy teniendo un gran problema con mi aplicacion queria saber si aquiel pudiera ayudarme estoy tratando de organizar un documento y tengo muchas dificultades haciendolo quisiera saber si alquien aqui me pudiera ayudar se lo agradecería mucho.

import java.io.*; // needed for file and I/O classes
import java.util.*;

public class Assigment4
{
public static void main(String[] args) throws IOException
{

int count = 0;
int A = 0, AM = 0, B = 0, BM = 0, BP = 0, C = 0, CP = 0, D = 0, DP = 0, F = 0, I = 0, W = 0, transfer = 0, passing = 0;
String fileName; // to hold the file name

ArrayList<String> courseNo = new ArrayList<String>();
ArrayList<String> departCode = new ArrayList<String>();
ArrayList<String> department = new ArrayList<String>();
ArrayList<String> courseName = new ArrayList<String>();
ArrayList<String> course = new ArrayList<String>();
ArrayList<String> grade = new ArrayList<String>();
ArrayList<String> sectionNo = new ArrayList<String>();
String blank = "";
String blank2 = "";


//create a scanner object for keyboard input
Scanner keyboard = new Scanner(System.in);

// get the file name
//System.out.print("Enter the name of the file: ");
fileName = "Grades.txt";
//fileName = keyboard.nextLine();

// open the file
File theFile = new File(fileName);

//create a scanner object for to read the file
Scanner inputFile = new Scanner(theFile);

// use a while loop that types the document information
while(inputFile.hasNext())
{

blank = "";
blank2 = "";

//assign every document data to a different variable
courseNo.add(inputFile.next());
departCode.add(inputFile.next());
department.add(inputFile.next());
courseName.add(inputFile.next());
course.add(inputFile.next());
grade.add(inputFile.next());
sectionNo.add(inputFile.next());
blank = inputFile.nextLine();
blank2 = inputFile.nextLine();

if(!blank2.equals("") )
{

department.add(count, courseName.get(count) );
courseName.set(count, course.get(count) );
courseName.add(count, grade.get(count) );
course.set(count, sectionNo.get(count) );
grade.set(count, blank);
sectionNo.set(count, blank2);


}

else if(!blank.equals("") )
{

courseName.add(count, course.get(count) );
course.set(count, grade.get(count) );
grade.set(count, sectionNo.get(count) );
sectionNo.set(count, blank);

}


inputFile.nextLine();

count++;

}

for(int i = 0; i < count; i++)
{
if(grade.get(i).equals("A") )
A++;

else if(grade.get(i).equals("A-") )
AM++;

else if(grade.get(i).equals("B") )
B++;

else if(grade.get(i).equals("B-") )
BM++;

else if(grade.get(i).equals("B+") )
BP++;

else if(grade.get(i).equals("C") )
C++;

else if(grade.get(i).equals("C+") )
CP++;

else if(grade.get(i).equals("D") )
D++;

else if(grade.get(i).equals("D+") )
DP++;

else if(grade.get(i).equals("F") )
F++;

else if(grade.get(i).equals("I") )
I++;

else if(grade.get(i).equals("W") )
W++;

else if(grade.get(i).equals("Transfer") )
transfer++;

else if(grade.get(i).equals("Passing") )
passing++;

}

//for(int i = 0; i < count; i++)
// System.out.println(grade.get(i) );

System.out.printf("%-10s  %-5s %2s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", "Course No.", "Subject",
"Course", "Course Title", "A", "A-", "B", "B-", "B+","C", "C+", "D", "D+", "F", "I", "W", "Transfer", "Passing\n" );

for(int i = 0; i < count; i++)
{

System.out.printf("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s", courseNo.get(i),
departCode.get(i), department.get(i), courseName.get(i), course.get(i), grade.get(i), sectionNo.get(i));
}


}

}



este es el documento

Citar4750   ACC   Accounting   Business Accounting   ACC101   A-   001
4750   ACC   Accounting   Business Accounting   ACC101   B+   001
4750   ACC   Accounting   Business Accounting   ACC101   B-   001
4750   ACC   Accounting   Business Accounting   ACC101   A   001
4750   ACC   Accounting   Business Accounting   ACC101   A   001
4750   ACC   Accounting   Business Accounting   ACC101   B+   001
4750   ACC   Accounting   Business Accounting   ACC101   A-   001
4750   ACC   Accounting   Business Accounting   ACC101   A   001
4750   ACC   Accounting   Business Accounting   ACC101   A   001
4750   ACC   Accounting   Business Accounting   ACC101   F   001
4750   ACC   Accounting   Business Accounting   ACC101   A   001
4750   ACC   Accounting   Business Accounting   ACC101   C+   001
4750   ACC   Accounting   Business Accounting   ACC101   A   001
3157   BIO   Biology   Anatomy   BIO320   A   001
3157   BIO   Biology   Anatomy   BIO320   W   001
3157   BIO   Biology   Anatomy   BIO320   D+   001
3157   BIO   Biology   Anatomy   BIO320   D   001
3157   BIO   Biology   Anatomy   BIO320   F   001
3157   BIO   Biology   Anatomy   BIO320   B   001
3157   BIO   Biology   Anatomy   BIO320   A-   001
3157   BIO   Biology   Anatomy   BIO320   A-   001
3157   BIO   Biology   Anatomy   BIO320   A   001
3157   BIO   Biology   Anatomy   BIO320   B-   001
3157   BIO   Biology   Anatomy   BIO320   A   001
3157   BIO   Biology   Anatomy   BIO320   C   001
3157   BIO   Biology   Anatomy   BIO320   A   001
3157   BIO   Biology   Anatomy   BIO320   C+   001
3494   BUS   Business   Marketing Fundamentals   BUS251   C   006
3494   BUS   Business   Marketing Fundamentals   BUS251   A   006
3494   BUS   Business   Marketing Fundamentals   BUS251   A-   006
3494   BUS   Business   Marketing Fundamentals   BUS251   D   006
3494   BUS   Business   Marketing Fundamentals   BUS251   A   006
3494   BUS   Business   Marketing Fundamentals   BUS251   A-   006
3494   BUS   Business   Marketing Fundamentals   BUS251   B+   006
3494   BUS   Business   Marketing Fundamentals   BUS251   B-   006
3494   BUS   Business   Marketing Fundamentals   BUS251   A-   006
4612   CMP   Computer Science   Java I   CMP110   A-   010
4612   CMP   Computer Science   Java I   CMP110   B   010
4612   CMP   Computer Science   Java I   CMP110   A-   010
4612   CMP   Computer Science   Java I   CMP110   A-   010
4612   CMP   Computer Science   Java I   CMP110   A   010
4612   CMP   Computer Science   Java I   CMP110   D   010
4612   CMP   Computer Science   Java I   CMP110   B+   010
4612   CMP   Computer Science   Java I   CMP110   B   010
4612   CMP   Computer Science   Java I   CMP110   A   010
4612   CMP   Computer Science   Java I   CMP110   A-   010
4188   CMP   Computer Science   Operating Systems   CMP320   C   106
4188   CMP   Computer Science   Operating Systems   CMP320   A-   106
4188   CMP   Computer Science   Operating Systems   CMP320   A-   106
4188   CMP   Computer Science   Operating Systems   CMP320   B+   106
4188   CMP   Computer Science   Operating Systems   CMP320   A   106
4188   CMP   Computer Science   Operating Systems   CMP320   D+   106
4188   CMP   Computer Science   Operating Systems   CMP320   A   106
4188   CMP   Computer Science   Operating Systems   CMP320   W   106

0roch1

y qué se supone que se tiene que hacer?, cuál es el problema?. da más detalles y comenta tu duda puntual.

josephb401

el problema es que el programa no quiere compilar

0xFer

SI compila, pero creo que lanza una excepción, ¿puedes colgar la excepción que te lanza?
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

josephb401

Course No.            Subject         Course Course Title A A- B B- B+ C C+ D D+
F I W Transfer4750                , ACC            , Business, ACC101, A-,
001, 4750       ACC     Accounting      Business Accounting     ACC101  B+
001, Exception in thread "main" java.util.MissingFormatArgumentException: Format
specifier '%s'
        at java.util.Formatter.format(Formatter.java:2519)
        at java.io.PrintStream.format(PrintStream.java:970)
        at java.io.PrintStream.printf(PrintStream.java:871)
        at Assigment4.main(Assigment4.java:148)

0xFer

#5
Código (java) [Seleccionar]
System.out.printf("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s", courseNo.get(i),departCode.get(i), department.get(i), courseName.get(i), course.get(i), grade.get(i), sectionNo.get(i));

Observa cuántas veces aparece el %s dentro del printf, yo conté 18, pero tú sólo das 7 valores para esos 18 que se piden( esos 7 son courseNo.get(i),departCode.get(i), department.get(i), courseName.get(i), course.get(i), grade.get(i), sectionNo.get(i)); ) agrega lo que hace falta o quita lo que sobra.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

josephb401


0xFer

Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

josephb401

tengo otra pregunta porca en el while loop no se aloca la informacion en el array que quiero

0xFer

#9
En la última linea de código( en donde imprimes los valores) te hace falta hacer un salto de linea después de imprimir una cadena( eso nadamás es para ver bien lo que se imprime). De todas formas al momento de leer una linea del archivo guardas varias veces ciertos valores de esa linea, te recomiendo que al leer una linea guardes toda esa linea en un solo String.

Código (java) [Seleccionar]
ArrayList<String> Lineas = new ArrayList<String>();

// use a while loop that types the document information
while(inputFile.hasNext())
{

String linea = inputFile.nextLine();
Lineas.add(linea);
inputFile.nextLine();

count++;
}


luego imprimes cada linea:
Código (java) [Seleccionar]
for(int i = 0; i < count; i++)
{
    System.out.printf("%s \n", Lineas.get(i));
}

   

Si no te gusta así entonces en tu código ve revisando los valores que leas varias veces, por ejemplo:

Código (java) [Seleccionar]
courseNo.add(inputFile.next());
departCode.add(inputFile.next());
department.add(inputFile.next());
courseName.add(inputFile.next()); //Ok, courseName ya está
course.add(inputFile.next());
grade.add(inputFile.next());
sectionNo.add(inputFile.next());
blank = inputFile.nextLine();
blank2 = inputFile.nextLine();

if(!blank2.equals("") )
{

department.add(count, courseName.get(count) );
courseName.set(count, course.get(count) );
courseName.add(count, grade.get(count) );  //courseName de nuevo?
course.set(count, sectionNo.get(count) );
grade.set(count, blank);
sectionNo.set(count, blank2);
}

Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}