使用应用程序时出现问题
我需要从文本文件中读取数据,每行包含一个整数,我需要将其读入数组并加倍,然后将其输出到另一个文本文件。但是,我不能让文件打开并被读取,所以我可以将它们添加到数组。
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;
}
}
这两行给出了错误默认构造函数无法处理由隐式超级构造函数抛出的异常类型IOException。必须定义一个明确的 构造
任何人都知道如何解决这个问题? #fixed#
这是我必须做的事情的要点
答案 0 :(得分:2)
错误消息
默认构造函数无法处理隐式超级构造函数抛出的异常类型IOException。必须定义一个显式的构造函数。
很清楚。你有一个基类,构造函数抛出一个IOException
:
public class BaseClass {
public BaseClass() throws IOException {
// ...
}
}
你正在尝试将其子类化:
public class SubClass extends BaseClass {
}
但SubClass
的(现在是隐含的)构造函数隐式调用super()
,它会抛出一个根本没有准备子类的异常,因为隐式构造函数看起来像这样:
public SubClass() {
super(); // this throws an IOException which is not declared to be thrown by SubClass constructor
}
因此,您必须定义一个显式构造函数:
public SubClass() throws IOException {
super();
}
<强>更新强>
问题实际上是由初始化实例字段和初始化器抛出异常引起的。在这种情况下,您必须在抛出异常的构造函数中移动它们:
public MainActivity() throws IOException {
File infile = new File("inputtextfile.txt");
Scanner fsc = new Scanner(infile);
AssetManager assetManager = getAssets();
Scanner fsc1 = new Scanner(assetManager.open("inputtextfile.txt"));
}
答案 1 :(得分:0)
首先尝试相对路径进行调试。有些事情:文件文件=新文件(“./ target / test.txt”);
答案 2 :(得分: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>