英文:
Function Decipherer
问题
public class Decipherer {
String arg = "aopi?sedohtém@#?sedhtmg+p9l!";
int nbrChar = arg.length() / 2;
String arg2 = arg.substring(5, nbrChar - 1);
String arg3 = arg2.replace("@#?", " ");
String arg4 = new StringBuilder(arg3).reverse().toString();
public static void main(String[] args) {
Decipherer mesage1 = new Decipherer();
Decipherer message3 = new Decipherer();
Decipherer message4 = new Decipherer();
}
}
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The constructor Decipherer() is undefined
The constructor Decipherer() is undefined
The constructor Decipherer() is undefined
Syntax error, insert "}" to complete ClassBody
at Decipherer.main(Decipherer.java:24)
I don't understand why it asks for another "}". Could someone explain it to me, please?
英文:
I'm a nooby on Java and in programmation too that's why I'm learning it I need your help for an exercise. I need to create the function decipherer with some changes on my arg.
import java.util.StringBuffer;
public class Decipherer{
String arg ="aopi?sedohtém@#?sedhtmg+p9l!";
int nbrChar = arg.length()/2;
String arg2 = arg.substring(5, nbrChar-1);
String arg3 = arg2.replace("@#?", " ");
String arg4 = new StringBuilder(arg3).reverse().toString();
return arg4;
}
public static void main(String[] args) {
Decipherer mesage1 = new Decipherer("0@sn9sirppa@#?ia'jgtvryko1");
Decipherer message3 = new Decipherer("q8e?wsellecif@#?sel@#?setuotpazdsy0*b9+mw@x1vj");
Decipherer message4 = new Decipherer("aopi?sedohtém@#?sedhtmg+p9l!");
}
--
> Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The constructor Decipherer(String) is undefined
The constructor Decipherer(String) is undefined
The constructor Decipherer(String) is undefined
Syntax error, insert "}" to complete ClassBody
at Decipherer.main(Decipherer.java:24)
I don't understand why it ask another "}". Could someone explain to me please?
答案1
得分: 0
以下是翻译好的部分:
主方法必须位于一个类内部。您可以将它放在Decipherer
中,另外,您进行的操作必须放在一个方法内部,以便能够返回某些内容。您需要一个接受String
的构造函数,例如:
public class Decipherer {
private final String input;
// 接受String的构造函数
public Decipherer(String input) {
this.input = input;
}
public String decipher() {
int nbrChar = input.length() / 2;
String arg2 = input.substring(5, nbrChar - 1);
String arg3 = arg2.replace("@#?", " ");
return new StringBuilder(arg3).reverse().toString();
}
// 类内的主方法
public static void main(String[] args) {
Decipherer decipherer1 = new Decipherer("0@sn9sirppa@#?ia'jgtvryko1");
String message1 = decipherer1.decipher();
Decipherer decipherer2 = new Decipherer("q8e?wsellecif@#?sel@#?setuotpazdsy0*b9+mw@x1vj");
Decipherer decipherer3 = new Decipherer("aopi?sedohtém@#?sedhtmg+p9l!");
}
}
通过执行new Decipherer("0@sn9sirppa@#?ia'jgtvryko1");
,将创建一个类型为Decipherer
的对象,带有字段input
。然后,您可以在此对象上调用方法decipher()
。
或者,您还可以不使用构造函数,而是暴露一个静态方法来解密,例如:
public static String decipher(String input) {
int nbrChar = input.length() / 2;
String arg2 = input.substring(5, nbrChar - 1);
String arg3 = arg2.replace("@#?", " ");
return new StringBuilder(arg3).reverse().toString();
}
您可以在主方法中调用它,如final String message = Decipherer.decipher("0@sn9sirppa@#?ia'jgtvryko1");
。
英文:
The main method must be within a class. You could put it e.g. in Decipherer
. In addition the operations that you are doing must be put inside a method to be able to return something. And you need a constructor accepting a String
, e.g.
public class Decipherer {
private final String input;
// constructor accepting String
public Decipherer(String input) {
this.input = input;
}
public String decipher() {
int nbrChar = input.length() / 2;
String arg2 = input.substring(5, nbrChar - 1);
String arg3 = arg2.replace("@#?", " ");
return new StringBuilder(arg3).reverse().toString();
}
// main method inside class
public static void main(String[] args) {
Decipherer decipherer1 = new Decipherer("0@sn9sirppa@#?ia'jgtvryko1");
String message1 = decipherer1.decipher();
Decipherer decipherer2 = new Decipherer("q8e?wsellecif@#?sel@#?setuotpazdsy0*b9+mw@x1vj");
Decipherer decipherer3 = new Decipherer("aopi?sedohtém@#?sedhtmg+p9l!");
}
}
By executing new Decipherer("0@sn9sirppa@#?ia'jgtvryko1");
an object of type Decipherer
is created with field input
. You can then invoke method decipher()
on this object.
Alternatively you can also go without constructor and expose a static method to decipher, e.g.
public static String decipher(String input) {
int nbrChar = input.length() / 2;
String arg2 = input.substring(5, nbrChar - 1);
String arg3 = arg2.replace("@#?", " ");
return new StringBuilder(arg3).reverse().toString();
}
which you can call in your main method as final String message = Decipherer.decipher("0@sn9sirppa@#?ia'jgtvryko1");
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论