我从朋友处获得了一些伪代码形式的测试代码。他请求我的帮助在这里发帖。
这是伪代码:
function g(string str) returns string
int i =0
string new_str = ""
while i < len(str) - 1
new_str = new_str + str [i + 1]
i++
end
return new_str
end
function f(string str) return string
if len(str) == 0
return ""
else if len(str) == 1
return str
else
return f(g(str) + str [0]
end
end
function h(int n, string str) returns string
whlie n != 1
if n % 2 == 0
n = n/2
else
n = 3 * n + 1
end
str = f(str)
end
return str
end
function pow(int x, int y) returns int
if y == 0
return 1
else
return x * pow(x, y-1)
end
end
print (h(1, "fruits"))
print (h(2, "fruits"))
print (h(5, "fruits"))
print (h(pow(2, 1000000000000000), "fruits"))
print (h(pow(9831050005000007), "fruits"))
我试图将其转换为Java语法,但我在第20行和第32行中遇到错误,其中说:
不兼容的类型:字符串无法转换为字符串[]
这里是我做的代码:
public class TestLogic{
public String g(String[] str){
int i=0;
String new_str = "";
while(i < (str.length -1)){
new_str += str[1 + i];
i = i + 1;
}
return new_str;
}
public String f(String[] str){
if (str.length == 0) {
return "";
}
else if (str.length == 1){
return str.toString();
}
else {
return f(g(str)) + str [0];
}
}
public static String h (int n, String str){
while(n!=1){
if (n%2==0){
n= n/2;
}
else{
n =3*n +1 ;
}
str = f(str);
}
return str;
}
public static int pow(int x, long y){
if (y==0) {
return 1;
}
else{
return x * pow(x, y-1);
}
}
public static void main(String[] args) {
System.out.print(h(1, "fruits"));
System.out.print(h(2, "fruits"));
System.out.print(h(5, "fruits"));
System.out.print(h(pow(2, 1000000000000000l),"fruits"));
System.out.print(h(pow(2, 9831050005000007l),"fruits"));
}
}
在这里要清楚,我不是程序员。我是Java和编程世界的新手。
答案 0 :(得分:4)
你的朋友在他的例子中没有使用String-Array(使用另一种编程语言),他使用普通的String。
当他访问带括号string [i + 1]
的字符串时,java中的translatet代码将为string.charAt(i+1)
。所以只需将String-Arrays更改为普通String。
答案 1 :(得分:0)
在f和g中,你传给一个参数aj数组的字符串(String []) 字符串不能转换为字符串的aj数组,因此如果删除这两个函数的参数类型中的[]括号,它应该可以工作。