Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找不到我的逻辑错误_Java_Netbeans - Fatal编程技术网

Java 找不到我的逻辑错误

Java 找不到我的逻辑错误,java,netbeans,Java,Netbeans,我制作了一个简单的程序,包括: 使用文件(读写) 端类扩展 但是这个计划不起作用。Netbeans没有显示错误,但当我运行它时……会出现某种错误……而且我不知道我的错误在哪里(我认为这是一个逻辑错误) 下面是一个简单的程序: package detyre_kursi; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Scanner; public cla

我制作了一个简单的程序,包括: 使用文件(读写) 端类扩展 但是这个计划不起作用。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)
线程“main”java.util.NoSuchElementException中的异常 位于java.util.Scanner.throwFor(Scanner.java:907) 下一步(Scanner.java:1416) 位于detyre_kursi.LlogariBankare.Lexim(detyre_kursi.java:57) 在detyre_kursi.LlogariBankare。(detyre_kursi.java:40) 位于detyre_kursi.detyre_kursi.main(detyre_kursi.java:11)
Java结果:1

此行导致问题。scanner.nextInt()可能不是int,我觉得除非有具体原因,否则执行两个next()调用是不好的

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

这只是一个猜测,但请尝试替换:

scanner.next().equals(s)
与:


我认为你的逻辑问题来自于

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

再次检查。

我需要它。接下来,我可以将创建对象时的用户名与文件中的用户名进行比较,我检查了文件,结果一切正常,因为我的文件只有这一行:aaa 1000 1990 34000我确信这是由于.nextInt()调用。为什么不试着让两个局部变量的值和字符串s=scanner.next()等等,然后在if之前打印它们呢?作为测试,iv尝试了你说的所有东西,但没有一个奏效,然后。。。。。我很沮丧地删除了这个文件,又做了一个……它很有效,但答案是ThinkStip,因为它已经给我回复了好几次
LlogariBankare llogaria1 = new LlogariBankare("aaa", 1000);