не могу найти мою логическую ошибку - PullRequest
0 голосов
/ 24 января 2012

Я сделал простую программу с: работа с файлами (читай, пиши) конец класса расширяется но программа не работает. 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 содержит следующую строку: ааа 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

Ответы [ 3 ]

1 голос
/ 24 января 2012

Эта строка вызывает проблему.scanner.nextInt () не может быть int, и я считаю, что не следует делать два вызова next (), если у вас нет конкретной причины.

if(scanner.next().equals(s)&&scanner.nextInt()==llog){
0 голосов
/ 25 января 2012

Я думаю, что ваша логическая проблема связана с конструктором

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

Проверьте это снова.

0 голосов
/ 24 января 2012

Это просто дикое предположение, но попробуйте заменить:

scanner.next().equals(s)

на:

s.equals(scanner.next())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...