package ergasia1;
import java.io.*;
import java.util.*;
public class Reader {
public static ArrayList<Autokinhta> Ama3ia;
public static void main(String[] aArgs) throws FileNotFoundException {
Reader parser = new Reader("D:\\Temp\\modela.txt");
parser.getLines();
printAma3ia();
log("Done.");
}
public Reader (String FileName){
fFile = new File(FileName);
}
// public final ArrayList <Autokinhta> getLines() throws FileNotFoundException
public final void getLines() throws FileNotFoundException
{
Ama3ia = new ArrayList<Autokinhta>();
Autokinhta a = new Autokinhta ();
String line ;
Scanner scan = new Scanner(new FileReader(fFile));
try {
while ( scan.hasNextLine() ){
line = scan.nextLine();
line=line.trim();
if (line.equals("MODEL_LIST"))
{
line = scan.nextLine();
line=line.trim();
if (line.equals("{"))
{
scan.useDelimiter("}");
do{
line = scan.next(); //read next block that starts with model
line = line.trim();
Scanner inScanner = new Scanner(line);
String line2 = "";
if (inScanner.hasNextLine())
line2 = inScanner.nextLine().trim();
if (line2.startsWith("MODEL", 0))
{
line2 = inScanner.nextLine().trim();
if (line2.startsWith("{"))
{
//Epivatika e = new Epivatika ();
do
{
line2=inScanner.nextLine().trim();
int splitPos = line2.indexOf(" ");
if (splitPos== -1){
break;
}
else {
String name = line2.substring(0, splitPos);
String value = line2.substring(splitPos+1);
if (name.equals("MODEL_ID")) {
a.setOnoma_modelou(value);
}
/*
*
* else if (name.equals("CATEGORY")) {
if (name.equals("epivatika")){
}
else {
}
}
else if (name.equals("TYPE")) {
}*/
else if (name.equals("LITTERS")) {
int intvalue = Integer.parseInt(value);
a.setKuvismos(intvalue);
}
else if (name.equals("HORSEPOWER")) {
int intvalue = Integer.parseInt(value);
a.setKuvismos(intvalue);
}
else if (name.equals("NUMBER_OF_GEARS")) {
int intvalue = Integer.parseInt(value);
a.setKuvismos(intvalue);
}
else if (name.equals("TYPE_OF_TRANSMISSION")) {
if (value.equals("MECHANICAL")){
a.setTupos_kivwtiou(true);
}
else a.setTupos_kivwtiou(false);
}
else if (name.equals("LENGTH")) {
double doublevalue = Double.parseDouble(value);
a.setMhkos(doublevalue);
}
else if (name.equals("WIDTH")) {
double doublevalue = Double.parseDouble(value);
a.setPlatos(doublevalue);
}
else if (name.equals("HEIGTH")) {
double doublevalue = Double.parseDouble(value);
a.setUyos(doublevalue);
}
else if (name.equals("NUMBER_OF_DOORS")) {
int intvalue = Integer.parseInt(value);
a.setArithmos_thurwn(intvalue);
}
else if (name.equals("COST")) {
float floatvalue = Float.parseFloat(value);
a.setTimh(floatvalue);
}
// log("Name is : " + quote(name.trim()) + ", and Value is : " + quote(value.trim()) );
}
}
while(inScanner.hasNext());
//System.out.println(Auto);
Ama3ia.add(a);
System.out.println(a.toString());
}
}
else if (line2.length()==0){ //end of file has reached
break;
}
}
while(scan.hasNextLine());
}
}
}
}
finally {
scan.close();
}
}
private static void printAma3ia(){
for ( int i=0 ; i < Ama3ia.size() ; i++){
//Autokinhta a= new Autokinhta();
//a = Ama3ia.get(i);
System.out.println(Ama3ia);
}
}
// PRIVATE
private final File fFile;
private static void log(Object aObject){
System.out.println(String.valueOf(aObject));
}
private String quote(String aText){
String QUOTE = "'";
return QUOTE + aText + QUOTE;
}
}
package ergasia1;
public class Autokinhta {
private String onoma_modelou;
private int kuvismos;
private int ippodunamh;
private int arithmos_taxuthtwn;
private boolean tupos_kivwtiou;//true mhxaniko , false automato H me enumeration
private double platos;
private double mhkos;
private double uyos;
private int arithmos_thurwn;
private float timh ;
protected double ekptwsh;
public Autokinhta( String on_mod, int kuv , int ip , int ar_tax , boolean tup_kiv , double pl , double mhk , double uy,int ar_thur , float tim ){
onoma_modelou=on_mod;
kuvismos=kuv;
ippodunamh=ip;
arithmos_taxuthtwn=ar_tax;
tupos_kivwtiou=tup_kiv;
platos=pl;
mhkos=mhk;
uyos=uy;
arithmos_thurwn=ar_thur;
timh=tim;
}
public Autokinhta(){
this("",0,0,0,true,0,0,0,0,0);
}
public void setOnoma_modelou(String on_mod){
onoma_modelou=on_mod;
}
public String getOnoma_modelou(){
return onoma_modelou;
}
public void setKuvismos ( int kuv){
kuvismos=kuv;
}
public int getKuvismos(){
return kuvismos;
}
public void setIppodunamh ( int ip){
ippodunamh=ip;
}
public int getIppodunamh(){
return ippodunamh;
}
public void setArithmos_taxuthtwn ( int ar_tax){
arithmos_taxuthtwn=ar_tax;
}
public int getArithmos_taxuthtwn(){
return arithmos_taxuthtwn;
}
public void setPlatos ( double pl){
platos=pl;
}
public double getPlatos(){
return platos;
}
public void setMhkos ( double mhk){
mhkos=mhk;
}
public double getMhkos(){
return mhkos;
}
public void setUyos ( double uy){
uyos=uy;
}
public double getUyos(){
return uyos;
}
public void setTupos_kivwtiou ( boolean tup_kiv){
tupos_kivwtiou=tup_kiv;
}
public boolean getTupos_kivwtiou(){
return tupos_kivwtiou;
}
public void setTimh(float tim){
timh=tim;
}
public float getTimh(){
return timh;
}
public String tuposkivwtiou (){
return (tupos_kivwtiou)?"5 ταχυτητων":"6 ταχυτητων";
}
public void setArithmos_thurwn(int ar_thur){
arithmos_thurwn=ar_thur;
}
public int getArithmos_thurwn() {
return arithmos_thurwn;
}
public String toString () {
return "\n"+"\n"+"Ονομα μοντελου"+":"+onoma_modelou +
"\n"+"Κυβισμος"+":"+kuvismos+
"\n"+"Ιπποδυναμη"+":"+ ippodunamh +
"\n"+"Αριθμος Ταχυτητων" +":"+ arithmos_taxuthtwn+
"\n"+"Τυπος Κιβωτιου" +":"+tuposkivwtiou()+
"\n"+"Πλατος"+":" +platos+"\n"
+"Μηκος"+":" +mhkos+"\n"
+"Υψος"+":" +uyos+"\n"
+"Αριθμος θυρων"+":" +arithmos_thurwn+
"\n"+"Τιμη"+":" +timh+"\n";
}
public void Print (){
System.out.println(this.toString());
}
public double getEkptwsh(){ return ekptwsh; }
MODEL_LIST
{
MODEL
{
MODEL_ID “Ford Fiesta 1.0 170hp 4D not_auto”
CATEGORY epivatika
TYPE MIKRO
LITERS 1600
HORSEPOWER 106
NUMBER_OF_GEARS 6
TYPE_OF_TRANSMISSION MECHANICAL
LENGTH 1.26
WITDTH 1.56
HEIGTH 1.45
NUMBER_OF_DOORS 4
COST 35000
}
MODEL
{
MODEL_ID “Nissan Almera 1.6 110hp 4D auto”
CATEGORY epivatika
TYPE MESAIO
LITERS 1600
HORSEPOWER 110
NUMBER_OF_GEARS 5
TYPE_OF_TRANSMISSION AUTOMATIC
LENGTH 1.56
WITDTH 1.23
HEIGTH 1.87
NUMBER_OF_DOORS 4
COST 22500
}
MODEL
{
MODEL_ID “Ford Transit 1.0 170hp 4D auto”
CATEGORY epivatika
TYPE VAN
LITERS 1000
HORSEPOWER 170
NUMBER_OF_GEARS 6
TYPE_OF_TRANSMISSION MECHANICAL
LENGTH 1.26
WITDTH 1.56
HEIGTH 1.45
NUMBER_OF_DOORS 4
COST 35000
}
MODEL
{
MODEL_ID “Toyota Corola 1.6 120hp 4D auto”
CATEGORY epivatika
TYPE MESAIO
LITERS 1600
HORSEPOWER 120
NUMBER_OF_GEARS 5
TYPE_OF_TRANSMISSION MECHANICAL
LENGTH 2.22
WITDTH 1.67
HEIGTH 1.54
NUMBER_OF_DOORS 4
COST 20000
}
MODEL
{
MODEL_ID “Mercedes XLZ 2.2 189hp 5D auto”
CATEGORY epaggelmatika
TYPE MINI BUS
LITERS 2200
HORSEPOWER 189
NUMBER_OF_GEARS 6
TYPE_OF_TRANSMISSION AUTOMATIC
LENGTH 2.56
WITDTH 1.56
HEIGTH 2.01
NUMBER_OF_DOORS 5
COST 28000
}
MODEL
{
MODEL_ID “Nissan TourBus 2.5 178hp 4D not_auto”
CATEGORY epaggelmatika
TYPE HMIFORTHGA
LITERS 2500
HORSEPOWER 178
NUMBER_OF_GEARS 6
TYPE_OF_TRANSMISSION MECHANICAL
LENGTH 2.56
WITDTH 1.45
HEIGTH 2.45
NUMBER_OF_DOORS 4
COST 18500
}
MODEL
{
MODEL_ID “Honda Civic 1.8 135hp 2D auto”
CATEGORY epaggelmatika
TYPE COUPE
LITERS 1800
HORSEPOWER 135
NUMBER_OF_GEARS 6
TYPE_OF_TRANSMISSION AUTOMATIC
LENGTH 2.34
WITDTH 1.45
HEIGTH 1.89
NUMBER_OF_DOORS 2
COST 23890
}
}
The program tries to read a text file named modela which conatins characteristics of several cars . it also tries to put the values of the txt in the class Autokinhta , for example the value "106" in the line HORSEPOWER must be set as the value in setIppodunamh in the class Autokinhta. Here i have 2 problems .
1st I need the arithmetic values to be setted as in , double , float in each case , but for some reason they are not converted correctly from Striing to float , double , int .
Κυβισμος:6 ( LITTERS)
Ιπποδυναμη:0(HORSEPOWER)
Αριθμος Ταχυτητων:0( NUMBER_OF_GEARS)
Τυπος Κιβωτιου:5 ταχυτητων
Πλατος:0.0(WIDTH)
Μηκος:1.26
Υψος:1.45
Αριθμος θυρων:4
Τιμη:35000.0
2nd WHen i try to print the arraylist Ama3ia which contains all the car objects , i ony manage to print the last car Honda civic for 50 times .
[
Ονομα μοντελου:“Honda Civic 1.8 135hp 2D auto”
Κυβισμος:6
Ιπποδυναμη:0
Αριθμος Ταχυτητων:0
Τυπος Κιβωτιου:6 ταχυτητων
Πλατος:0.0
Μηκος:2.34
Υψος:1.89
Αριθμος θυρων:2
Τιμη:23890.0
,
Ονομα μοντελου:“Honda Civic 1.8 135hp 2D auto”
Κυβισμος:6
Ιπποδυναμη:0
Αριθμος Ταχυτητων:0
Τυπος Κιβωτιου:6 ταχυτητων
Πλατος:0.0
Μηκος:2.34
Υψος:1.89
Αριθμος θυρων:2
Τιμη:23890.0
,
Ονομα μοντελου:“Honda Civic 1.8 135hp 2D auto”
Κυβισμος:6
Ιπποδυναμη:0
Αριθμος Ταχυτητων:0
Τυπος Κιβωτιου:6 ταχυτητων
Πλατος:0.0
Μηκος:2.34
Υψος:1.89
Αριθμος θυρων:2
Τιμη:23890.0
,
..........( 45 times or so)
]
I am sorry for the long post , but i really need these things to be solved if you can help and cant understand something please ask me . Thank you.
This post has been edited by pbl: 23 May 2012 - 01:45 PM
Reason for edit:: Your problem is not printing the ArrayList, it is parsing the file to create the objects put into the ArrayList

New Topic/Question
Reply



MultiQuote




|