【发布时间】:2016-10-28 11:48:50
【问题描述】:
我有一个 c# 函数,我想将我的函数翻译成 Java。但我在这次谈话中犯了一个错误,我无法弄清楚。这是我的 C# 代码:
public bool ParantezKontrol(string input, int numOpen = 0)
{
if (numOpen < 0)
return false;
if (string.IsNullOrEmpty(input))
return numOpen == 0;
char c = input[0];
string rest = input.Substring(1);
if (c == '(')
return ParantezKontrol(rest, numOpen + 1);
else if (c == ')')
return ParantezKontrol(rest, numOpen - 1);
else
return ParantezKontrol(rest, numOpen);
}
我无法实现ParantezKontrol(string input, int numOpen = 0) 这个定义和return numOpen == 0; 这个。
这里是我写的 Java 代码:
public boolean ParantezKontrol(String input, int numOpen){
if(numOpen<0) //numOpen=-1 olması durumunda parantez kapatılmayı unutmuştur. Bu durumda fonksiyon false değer gönderir.
return false;
if(input==null&&input.isEmpty()){
return true;
}
char c= input.charAt(0);
String rest = input.substring(1);
if(c == '(')
return ParantezKontrol(rest,numOpen+1); //Girilen metinde '(' varsa fonksiyonu sağdan çağır
else if (c==')')
return ParantezKontrol(rest,numOpen-1); // ')' varsa soldan çağır
else return ParantezKontrol(rest,numOpen);
}
谁能解释我在哪里犯错并解决我的问题
【问题讨论】:
-
input==null&&input.isEmpty()不能为真。字符串不能为空和为空。如果它为空,那么您的代码将抛出异常。 -
我投票结束这个问题,因为它不是一个代码转换工具
-
C# 版本有
return numOpen == 0;,但在你的Java 中你输入return true; -
@Abion47 in java 我不能像 ParantezKontrol(string input, int numOpen = 0) 那样定义这个函数,因为在 java 中没有像 numopen=0 这样的定义。那是我想到的解决方案
-
@mybirthname 我认为您没有阅读我的问题。我不想让你转换我的代码。我只是被问到一个问题,如果我解决了这个问题。如果我的朋友帮助我,我会很感激的。