Problem i filinläsning [Java]
jag håller på med ett skolarbete men jag har kört fast. Jag ska läsa in konton och lånkonton från text filer och sen skriva ut dem. Detta fungerar bra för kunder, Konton och Transaktioner. Men inte för lån, och jag fattar verkligen inte varför.
I huvudklassen så läser jag inte från textfilerna, jag skriver även ut där.
Jag har även med klasserna för konto och lån här så man kan jämföra dem. Sen har jag lagt text filerna längst ner i inlägget så ni kan se om jag gjort fel där. Jag har suttit med det här ett tag nu och fattar inte vad jag gjort för fel. Jag uppskattar verkligen all hjälp jag kan få. Det är säkert inget svårt fel, men jag lyckas inte hitta felet.
Edit: Jag har prövat att ändra i loan.txt filen och ta bort eller lägga till ett kommatecken(som då bryter för ni del i inmatningen) och då klagar programmet och säger att det är fel i filen. Så den kommer ju åt och ser att det är saker i loan. Men den verkar inte vilja lägga in loan.txt i array som det görs med konto filen.
Huvudklass
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.InputMismatchException;
public class Banksystem {
public static void main(String[]args){//används för inmatning av kundfilen
java.util.Scanner s2 = new java.util.Scanner(System.in);
File personfil = new File("kunder.txt");
try {
FileReader fr = new FileReader(personfil);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
while (s != null){
String[] personarray = s.split(",");
if (personarray.length == 5){
new Kunder(personarray[0],
personarray[1],personarray[2], personarray[3], personarray[4]);
}
s = br.readLine();
}
br.close();
} catch (Exception e){
e.printStackTrace();
}
File kontofil = new File("konto.txt"); //används för inmatning av kontofilen
try {
FileReader fr = new FileReader(kontofil);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
while (s != null){
String[]kontoarray = s.split(",");
if (kontoarray.length == 5){
if (kontoarray[3].equals("vanlig")) {
// skapa vanligt konto
}
else {
// skapa lånekonto
}
new Konto(Integer.parseInt(kontoarray[0]),kontoarray[1],Double.parseDouble(kontoarray[2]),kontoarray[3], kontoarray[4]);
}
s = br.readLine();
}
br.close();
} catch (Exception e){
e.printStackTrace();
}
File transfil = new File("transaktion.txt"); //används för inmatning av Transaktioner
try {
FileReader fr = new FileReader(transfil);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
while (s != null){
String[] transaktionarray = s.split(",");
if (transaktionarray.length == 4){
new Transaktion(Double.parseDouble(transaktionarray[0]),transaktionarray[1],transaktionarray[2],transaktionarray[3]);
}
s = br.readLine();
}
br.close();
} catch (Exception e){
e.printStackTrace();
}
File loanfil = new File("loan.txt");
try {
FileReader ar = new FileReader(loanfil);
BufferedReader br = new BufferedReader(ar);
String s = br.readLine();
while (s != null){
String[] loanarray = s.split(",");
if (loanarray.length == 3){
new Loan(loanarray[0],loanarray[1],Double.parseDouble(loanarray[2]),loanarray[3]);
}
s = br.readLine();
}
br.close();
} catch (Exception e){
e.printStackTrace();
}
System.out.println("Välkommen till Speers bank"); //Skriver ut text
for (Kunder kund : Kunder.a1) {
System.out.println( kund);
//For loopar för att kunna skriva ut information från arrays
}
for (Konto kud : Konto.a2) {
System.out.println( kud);}
for(Transaktion ts : Transaktion.a3){
System.out.println(ts);
}
for (Loan ln : Loan.a5){
System.out.println(ln);
}
System.out.println(Loan.a5);
System.out.println(Konto.a2);
System.out.println(Transaktion.a3);
System.out.print("Mata in personnummer för att välja kund: ");
String a = s2.nextLine();
System.out.print(Konto.getKonto(a));
}
}
Loan klass
import java.util.ArrayList;
public class Loan {
public String personnummer;
public String kontotyp;
public double saldo;
public String kontonummer;
public static Loan[] loanvektor(){
return a5.toArray(new Loan[1]);
}
public static ArrayList<Loan> a5 = new ArrayList<Loan>();
public Loan(String pn, String kt, double so, String kn){
personnummer = pn;
kontotyp = kt;
saldo = so;
kontonummer = kn;
a5.add(this);
}
public Loan(){
a5.add(this);
}
public String getPersonnummer() {
return personnummer;
}
public void setPersonnummer(String personnummer) {
this.personnummer = personnummer;
}
public String getKontotyp() {
return kontotyp;
}
public void setKontotyp(String kontotyp) {
this.kontotyp = kontotyp;
}
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public String getKontonummer() {
return kontonummer;
}
public void setKontonummer(String kontonummer) {
this.kontonummer = kontonummer;
}
@Override
public String toString() {
return "Loan [personnummer=" + personnummer + ", kontotyp=" + kontotyp
+ ", saldo=" + saldo + ", kontonummer=" + kontonummer + "]";
}
}
Konto klass
import java.util.ArrayList;
public class Konto {
private int kontonr;
private String kontonamn;
private double saldo;
private String kontotyp;
private String personnummer;
public static Konto[] kontovektor(){
return a2.toArray(new Konto[1]);
}//Skapar en kontoarray
public static ArrayList<Konto> a2 = new ArrayList<Konto> ();//En arraylist bestående av konton
//Konstruktor för konton
public Konto(int knr, String knamn, double sal, String typ, String pn){
kontonr = knr;
kontonamn = knamn;
saldo = sal;
kontotyp = typ;
personnummer = pn;
a2.add(this);
}
public Konto(){
a2.add(this);
}
//Getters and Setters för att kunna använda värden i konton
public int getKontonr() {
return kontonr;
}
public void setKontonr(int kontonr) {
this.kontonr = kontonr;
}
public String getKontonamn() {
return kontonamn;
}
public void setKontonamn(String kontonamn) {
this.kontonamn = kontonamn;
}
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public String getKontotyp() {
return kontotyp;
}
public void setKontotyp(String kontotyp) {
this.kontotyp = kontotyp;
}
public String getPersonnummer() {
return personnummer;
}
public void setPersonnummer(String personnummer) {
this.personnummer = personnummer;
}
@Override
public String toString() {
return "Konto [kontonr= " + kontonr + ", kontonamn= " + kontonamn
+ ", saldo= " + saldo + ", kontotyp= " + kontotyp
+ ", personnummer= " + personnummer + "]";
}
public static String getKonto(String p) {
String konton = "";
for (int indexPos = 0; indexPos < a2.size(); indexPos++) {
if (a2.get(indexPos).personnummer.equals(p)) {
konton += a2.get(indexPos).toString() + "\n";
}
}
return konton;
}
}
Lån text filen
19920101,lånkonto,10000,2001
19920102,lånkonto,500000,2002
19220403,lånkonto,04343,2003
Konto textfilen
10000,sparkonto,1999001,vanlig,19920101
10001,sparkonto,1942420,vanlig,19920102
10002,sparkonto,10000,vanlig,19220403
10003,sparkonto,454354,vanlig,19220403
Speldator: i5 4670k stock | 8GB ram | Asus Z87-plus | Xonar Essence STX | SSD: Intel g2 , Samsung 830 256gb | R9 290 Tri-x | Define R4| Win 8 | Noctua nh-u12p | Qpad Mk-50
marinlik.wordpress.com/ Min blogg för nedbrytning av spel och diverse andra artiklar om NFL
500px.com/niclasbrundell