我是Java的新手。我正在尝试创建一个名为Database的类,它将读取一个文本文件来创建一个数组。这段代码中没有主要方法,因为我有另一个java文件作为主应用程序,它有主要方法。
这是我的代码:
public class Database {
public static String[][] items = new String[20][3];
public static String[][] fillArray(String myFile)
{
TextFileInput in = new TextFileInput(myFile);
for(int i=0; i<20; i++)
{
String line =in.readLine();
StringTokenizer token = new StringTokenizer(line, ",");
for(int j=0; j<3; j++)
{
items[i][j] = token.nextToken();
}
}
in.close();
return items;
}
public static String getName(String code)
{
for(int i=0; i<20; i++)
{
if (code.equals(items[i][0]))
return items[i][1];
}
}
public static String getPrice(String code)
{
for(int i=0; i<20; i++)
{
if(code.equals(items[i][0]))
return items[i][2];
}
}
}
问题1:Eclipse通过指示两种方法(getName和getPrice)来显示错误。它说:&#34; 此方法必须返回String &#34;类型的结果。任何人都可以解释并解决这个问题吗?
问题2:此数据库类包括通过读入文本文件创建的方法和数组。我有另一个java文件,它是包含main方法的主要应用程序文件。主应用程序文件是我想要创建对象并调用方法的文件。我理解这个概念,但是当我尝试创建数据库对象并调用此对象上的方法时,我不断收到错误。有人可以通过这个课程向我展示一个例子吗?
答案 0 :(得分:1)
答案1:您在getName
&amp; getPrice
方法在内部,如果可能执行的块,或者不是基于满足的条件,因此编译器会给出错误。
在方法返回之前,你需要有return语句。
答案2:由于数据库类中的所有方法都是static
,因此您无需创建对象,您可以使用classname
直接调用它,例如Database.getName("code")
答案 1 :(得分:0)
Java和Eclipse无法知道代码是否等于items [i] [0]。这就是为什么getName可能没有返回值。
public static String getName(String code)
{
for(int i=0; i<20; i++)
{
if (code.equals(items[i][0]))
return items[i][1];
}
return "";// or null
}
答案 2 :(得分:0)
对于This method must return a result of type String
,eclipse说你的方法返回类型是String,所以你必须在任何情况下都返回一个String,但是你的return语句在if()里面如果if里面的条件永远不是真的那么就没有了return语句所以在你的方法中添加一个默认的return语句,返回类型为String。
public static String getPrice(String code) {
for (int i = 0; i < 20; i++) {
if (code.equals(items[i][0])) return items[i][2];
}
return null;
}
答案 3 :(得分:0)
在您的方法getName
和getPrice
中,当您if
位于return
时,您已设置condition
条件和方法true
这就是为什么你有compilation
问题。
要解决此问题,请添加else
条件should return
或添加if after
完成if块。
答案 4 :(得分:0)
您的方法声明是
public static String getName(){...}
public static String getPrice(){...}
让我们分析一下,静态关键字意味着它是一种静态方法。 String表示此方法返回String的对象类型。 但是,您返回String数组对象,而不是String对象。 返回也在if语句中,如果if条件不满足,它就不会返回任何内容,但是你必须总是返回一个String类型的对象类型。
因此,如果代码永远不会进入if块
,则在if语句后添加一个returnif(YOUR CONDITION) {
//do stuff
//return stuff
}
//if never enters if block returns null
return null;
您的删除必须是
public static String[][] getName(){...}
public static String[][] getPrice(){...}
答案 5 :(得分:0)
Eclipse通过指示两种方法(getName和 用getPrice)。它说:“此方法必须返回类型的结果 字符串“。有人可以解释并解决这个问题吗?
方法签名声明返回类型为String:
public static String getName(String code)
所以你必须归还它。例如:
public static String getName(String code) {
String result = null;
// Perform work and update value in result.
return result;
}
有人可以通过这个课程向我展示一个例子吗?
您需要在调用任何实例方法之前实例化该类,而不是静态方法。例如:
String result = Database.getName("code"); //pass some string as input argument and get result.
另外请注意为什么你声明所有方法都是静态的?你need to understand why you really need static methods。