所以基本上我必须反向打印出worker的名字,然后逐个字符地循环遍历字符串。这就是我在Worker.java下对该方法所拥有的:
public String printRev(String fName) {
for (int i = 0; i < fName.length(); i++) {
fName = fName.charAt(i) + fName;
}
return fName;
}
对于UseWorker.java,我有:
anil.printRev();
jasmin.printRev();
fred.printRev();
但是它给了我错误信息:&#34; Worker类型中的方法printRev(String)不适用于arguments()。&#34;
还值得一提的是,我不允许修改UseWorker,只允许修改工人。
我该如何解决问题?
答案 0 :(得分:0)
我看到几个问题:
printRev
时,您不会提出任何争论,而是期望String
revert()
或getReverted()
以下是修正提案:
public String getReverted(String fName) {
StringBuilder revName = new StringBuilder(fName.length());
for (int i = fName.length(); i >0; i--) {
revName.append(fName.charAt(i - 1));
}
return revName.toString();
}
......你这么称呼它:
System.out.println(anil.printRev("string to revert"));
答案 1 :(得分:0)
好吧,通过声明像这个public static void encrypt(Context ctxt, File originalFile, char[]
passphrase)
throws IOException {
SQLiteDatabase.loadLibs(ctxt);
if (originalFile.exists()) {
File newFile=
File.createTempFile("sqlcipherutils", "tmp", ctxt.getCacheDir());
SQLiteDatabase db=
SQLiteDatabase.openDatabase(originalFile.getAbsolutePath(), "", null, SQLiteDatabase.OPEN_READWRITE);
db.rawExecSQL("ATTACH DATABASE '" + newFile.getAbsolutePath()+ "' AS encrypted KEY '"+String.valueOf(passphrase)+"'");
db.rawExecSQL("SELECT sqlcipher_export('encrypted')");
db.rawExecSQL("DETACH DATABASE encrypted");
int version=db.getVersion();
db.close();
db=SQLiteDatabase.openDatabase(newFile.getAbsolutePath(), passphrase, null, SQLiteDatabase.OPEN_READWRITE);
db.setVersion(version);
db.close();
originalFile.delete();
newFile.renameTo(originalFile);
}
}
这样的函数,你说“我想要一个名为public String printRev(String fName)
的函数,它返回printRev
的实例并且接受{{1}类型的一个参数(并且String
具有String
访问权限,但现在无关紧要。)
语句public
表示“从变量anil.printRev();
获取对象,并使用名称anil
调用函数,并在其上设置零参数。事实上,没有定义这样的方法,如您定义的那样它是一个带有一个参数的方法。
您可能要做的是printRev
,意思是“使用名称为printRev("Anil");
的方法和类型为printRev
的一个参数”,提供String
对象(字符串)到它的第一个参数并执行它。“
此外,rev功能将无法正常工作。您一直在向"Anil"
添加一个字符,然后从中读取,就好像它没有变化一样。您需要复制并向副本添加字符。喜欢这个
fName
(请注意,此方法可以进一步优化,但超出了此问题的范围)
答案 2 :(得分:0)
我发现您无法修改UseWorker.java,因此您必须对其他类进行更改。目前,您的方法需要将String作为参数传递,但显然Useworker类不希望您传递任何参数。 为此,您必须在可以修改的类中创建fName。 例如,如果您的班级是人物,请尝试:
public class Person{
String fName;
public Person(String fName){
this.fName = fName;
}
public String printRev(){
String result = "";
for (int i = 0; i < fName.length(); i++) {
result = fName.charAt(i) + result;
}
return result;
}
}