2012-01-24 118 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); 

再次检查出来。