-1

アプリに問題がある

各行に1つの整数を含むテキストファイルからデータを読み取る必要があり、それを配列に読み取って2倍にして別のテキストファイルに出力する必要があります。ただし、ファイルを開いて読み取ることができないので、それらを配列に追加できます。

package com.example.doubleandsave;

import java.io.File;
import java.util.Scanner;
import android.os.Bundle;
import android.app.Activity;
import android.content.res.AssetManager;
import android.view.Menu;

public class MainActivity extends Activity {


int[] inArray; 

File infile = new File("inputtextfile.txt");

Scanner fsc = new Scanner(infile);


AssetManager assetManager = getAssets();
Scanner fsc1 = new Scanner(assetManager.open("inputtextfile.txt")); 





@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}


}

これらの2行により、デフォルトのコンストラクターは暗黙のスーパーコンストラクターによってスローされた例外タイプIOExceptionを処理できませんというエラーが表示されます。明示的なコンストラクターを定義する必要があります

これを修正する方法を知っている人はいますか?#修繕#

これが私がしなければならないことの要点です

  1. 指定された名前の入力 (テキスト) ファイルを開きます (上記の最初の EditText フィールド)。このファイルは、アプリの「assets」ディレクトリに表示されます。成績のリストが含まれている必要があります (1 行に 1 つ)。成績を配列に読み取ります。(ファイルが存在しない場合は、上記の「ステータス」というラベルの付いた画面のテキスト領域に適切なメッセージを表示します。)
  2. メソッドを使用して、配列内のすべての値を 2 倍にします。(このメソッドをメイン アクティビティ クラスに含め、ボタンの押下に応答するメソッドから呼び出します。)
  3. 2 倍になった成績のリスト (1 行に 1 つ) を、指定された名前の新しいファイルに出力します (上記の 2 番目の EditText フィールド)。このファイルは、組み込み SDK の「getExternalFilesDir」メソッドを使用して取得できる、アプリの外部ファイル ディレクトリに表示されます。注: 出力ファイルを開く前に、そのファイルが既に存在するかどうかを確認してください。その場合は、上書きしないでください。ステータス テキスト領域にユーザーに適切なメッセージを表示し、ファイルには何も書き込まないでください。
4

3 に答える 3

0

メソッドの外でコードを実行しようとしています。宣言と初期化を分割したコードを次のように変更します。

public class MainActivity extends Activity {

    int[] inArray; 

    File infile;

    Scanner fsc;

    AssetManager assetManager;
    Scanner fsc1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        infile = new File("inputtextfile.txt");

        fsc = new Scanner(infile);

        assetManager = getAssets();

        fsc1 = new Scanner(assetManager.open("inputtextfile.txt")); 

    }

ノート。アクティビティのライフ サイクルについては、時間をかけて学習する必要があります。これを行うのonCreate()は、おそらく最適な場所ではありません。int[]よりもコレクションの方が扱いやすいと感じるかもしれません。ArrayList<Integer>

于 2013-10-01T08:10:16.163 に答える
0

デバッグのために最初に相対パスを試してください。:File file = new File("./target/test.txt"); のようなもの

于 2013-09-30T18:07:30.040 に答える