2012-01-24 117 views
0

我做了一個簡單的程序: 使用文件(讀寫) 終端類擴展 但程序不起作用。 Netbeans顯示沒有錯誤,但是當我運行它時......某種錯誤顯示出來.....以及我無法理解我的錯誤在哪裏(我認爲是合乎邏輯的錯誤)。不能找到我的邏輯錯誤

下面是簡單的程序:

package detyre_kursi; 

import java.io.File; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Scanner; 

public class Detyre_kursi { 

    public static void main(String[] args) { 
    LlogariBankare llogaria1 = new LlogariBankare("aaa", 1000); 
    llogaria1.Balanca();  
    } 

} 



class LlogariBankare { 
    //variablat e instances 
    private String id; 
    private int nrLlogarise; 
    private int vitiHapjes; 
    private double balanca; 
    static int nrTranasksioneve = 0; 

    public LlogariBankare() { 
    System.out.println("Ju keni harruar te vendosi id dhe nrLlogarise"); 

    } 

    public LlogariBankare(String id, int nrLlogarise) { 
    this.id = id; 
    this.nrLlogarise = nrLlogarise; 
    vitiHapjes = 0; 
    balanca = 0; 
    Lexim(this.id, this.nrLlogarise); 
    } 

    public double getBalanca() { 
    return balanca; 
    } 

    public int getVitiHapjes() { 
    return vitiHapjes; 
    } 

    private void Lexim(String s, int llog) { 
    try { 
     File file = new File("c:\\java\\balanca.txt"); 
     Scanner scanner = new Scanner(file); 
     while (scanner.hasNextLine()) { 
     if (scanner.next().equals(s) && scanner.nextInt() == llog) { 
      vitiHapjes = scanner.nextInt(); 
      balanca = scanner.nextDouble(); 
     } 
     } 
    } catch (IOException e) { 
     e.getMessage(); 
    } 
    } 


    void Balanca() { 
    try{ 
     File file = new File("c:\\java\\test.txt"); 
     PrintWriter out = new PrintWriter(file); 
     out.println(this.balanca); 
    } catch (IOException e) { 
     e.getMessage(); 
    } 
    System.out.println(this.id + " , ju keni " + this.balanca + 
     " lek ne llogarine tuaj te krijuar ne vitin " + vitiHapjes + 
     " dhe keni kryer " + nrTranasksioneve + " transaksione gjithsej"); 
    } 


    void Terheqe(double terheqe) { 
    this.balanca -= terheqe; 
    System.out.println("Ju sapo keni terhequr " + terheqe + " nga llogaria juaj"); 
    nrTranasksioneve++; 
    } 

    void Depozitim(double depozitim) { 
    this.balanca += depozitim; 
    System.out.println("Ju sapo keni depozituar " + depozitim + " nga llogaria juaj"); 
    nrTranasksioneve++; 
    } 


} 

class Interesi extends LlogariBankare { 
    int vitiTanishem = 2012; 
    double interesi = 0; 
    int diferencaViteve = vitiTanishem - getVitiHapjes(); 

    Interesi(String id, int nrLlogarise) { 
    super(id,nrLlogarise); 
    } 

    void gjejInteresisn() { 
    interesi = getBalanca() + getBalanca() * diferencaViteve * 0.01; 
    } 

} 

文件balanca有這一行是: AAA 1000 1990年34000

在貧困的話,這是一個銀行的一些簡單的版本。

您從文件中讀取餘額,並使用Terheqe()和Depozitim()作爲餘額並將餘額寫入 。 您可以使用Balance()來查看您有多少個$。當我運行它,這個錯誤顯示:

Exception in thread "main" java.util.NoSuchElementException 
at java.util.Scanner.throwFor(Scanner.java:907) 
at java.util.Scanner.next(Scanner.java:1416) 
at detyre_kursi.LlogariBankare.Lexim(Detyre_kursi.java:57) 
at detyre_kursi.LlogariBankare.<init>(Detyre_kursi.java:40) 
at detyre_kursi.Detyre_kursi.main(Detyre_kursi.java:11) 

Java結果:1個

回答

1

此行引起問題。 scanner.nextInt()可能不是一個int,我覺得除非你有特定的原因,否則不好做兩個next()調用。

if(scanner.next().equals(s)&&scanner.nextInt()==llog){ 
+0

我需要.next,所以我可以比較用戶的名稱,當我創建對象的用戶在我的文件中的名稱,我檢查了文件,它都一切ok,因爲我的文件只有這一行: aaa 1000 1990 34000 –

+0

我確信這是因爲.nextInt()調用。你爲什麼不嘗試將值賦給兩個局部變量,String s = scanner.next()等,並在之前將它們打印出來?作爲測試。 – kosa

+0

iv嘗試了你所說的所有事情,但沒有工作,然後.....挫敗我刪除了該文件,並作出另一個.......它工作Thnks所有,但答案去思考,因爲它已經回答了幾次對我來說 –

0

這只是胡亂猜測,但嘗試更換:

scanner.next().equals(s) 

有:

s.equals(scanner.next()) 
0

我覺得你的邏輯問題是從構造

LlogariBankare llogaria1 = new LlogariBankare("aaa", 1000); 

再次檢查出來。