2016-12-26 6 views
-5

ソフトウェアを開いたり使用した回数をユーザーに示すアプリケーションを作成したいとします。このため私は以下のコードを作成しました。しかし、正しい出力が表示されていません。アプリケーションを実行すると、最初に1が表示され、2回目には1が表示されます。はJavaでエラーを表示します

public Founder() { 
    initComponents(); 

    int c=0; 
    c++; 
    jLabel1.setText(""+c); 
    return; 
} 
+1

@rmlanこれでコードを作成しました。私はnetbeansを行っています – user5840896

+1

あなたはまた、このサイトの仕組みを誤解しています。私たちはコード作成サービスではありません。 – rmlan

+0

私のコードを改善したい。私はあなたにこのコードでエラーが発生していると尋ねましたが、動作していません。このコードでエラーが見つかった場合は、コードを更新してください。私はこのウェブサイトについて誤解していません。 – user5840896

答えて

1

私は、私はあなたを助けたり、あなたの負荷を与えているかどうかわかりませんよ新しい問題と未解決の質問。以下は、プログラムの作業ディレクトリ(恐らく.classファイルが格納されているルートバイナリディレクトリ)のuseCount.txtというファイルにクラスFounderが構築された回数を格納します。次回プログラムを実行すると、ファイルからカウントが読み込まれ、1を加算して新しい値をファイルに書き戻します。

static final Path counterFile = FileSystems.getDefault().getPath("useCount.txt"); 

public Founder() throws IOException { 
    initComponents(); 

    // read use count from file 
    int useCount; 
    if (Files.exists(counterFile)) { 
     List<String> line = Files.readAllLines(counterFile); 
     if (line.size() == 1) { // one line in file as expected 
      useCount = Integer.parseInt(line.get(0)); 
     } else { // not the right file, ignore lines from it 
      useCount = 0; 
     } 
    } else { // program has never run before 
     useCount = 0; 
    } 
    useCount++; 

    jLabel1.setText(String.valueOf(useCount)); 

    // write new use count back to file 
    Files.write(counterFile, Arrays.asList(String.valueOf(useCount))); 
} 

これは、最も洗練された堅牢なソリューションではありませんが、始めることができます。別のコンピュータでプログラムを実行すると、ファイルが見つからず、0から数えてカウントされます。

1

初めてコードを実行しているときに、関連するデータがシステムのRAMに保存されます。アプリケーションを閉じると、それに関連するすべてのデータがRAMから削除されます(簡単にするため、削除されると仮定しますが、実際は少し異なります)。

アプリケーションを2回目に開くと、新しいデータがRAMに保存されます。この新しいデータには、コードの開始状態が含まれます。したがって、cの値は0(c = 0)に設定されます。

データを覚えておきたい場合は、データを永久ストレージ(システムのハードドライブなど)に保存する必要があります。しかし、私はあなたが初心者だと思います。これらの概念はかなり高度です。そのようなことを試す前にいくつかの基本的なプログラミングのやり方をする必要があります

+0

私は既にC = 0にしました。しかし、それはまだ正しい出力を示していません。 – user5840896

+0

あなたは私の答えを理解しましたか? –

+0

あなたはデータベースを作成することを考えていますか? – user5840896

1

ここであなたは永久的な基本的にそれを格納する必要があります。

  1. は恒久的にデータを格納するためのプロパティのクラスを参照してください:https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html
  2. ます。また、データファイルの元を使用することができます。 *.txt,*.csv

  3. また、シリアライズによって永続的なストレージが提供されます。 保存する各データのフィールドを持つSerializableを実装するクラスを作成できます。次に、ファイルにクラス全体を書き出すことができ、そして、あなたはここにシリアライズについてlater.Learnに戻ってそれを読むことができます:https://www.tutorialspoint.com/java/java_serialization.htm

+1

ok。ありがとうございます。データベースがない場合は、選択肢はありますか? – user5840896

+1

これらのオプションの場合、データベースを作成する必要はありません。 – Malav

関連する問題