当前位置: 首页 > 面试题库 >

当它在C#/ Java中应该返回-1时,IndexOf方法返回0

商昂然
2023-03-14
问题内容

我的一个朋友以这种奇怪的行为来到我这里,我无法解释,任何见解的观点都将不胜感激。

我正在运行VS 2005(C#2.0),以下代码显示了该行为

int rr = "test".IndexOf("");
Console.WriteLine(rr.ToString());

上面的代码,打印“ 0”,清楚地表明它应该有返回-1

这在Java中也会发生,其中以下类显示了该行为:

public class Test{
 public static void main(String[] args){
   System.out.println("Result->"+("test".indexOf("")));
 }
}

我正在运行Java 1.6.0_17


问题答案:

这不是规则的例外,而是方法indexOfstartsWith定义的自然结果。

您声称"test".indexOf("")应该返回-1。这基本上等于"test".startsWith("")应返回的索赔false。为什么是这样?尽管此情况在文档中特别提到了returning
true,但这并不是一个任意决定。

"test".startsWith("te")例如,您将如何决定?最简单的方法是使用递归。由于两个字符串都以character开头,因此't'您将调用"est".startsWith("e")并返回结果。同样,您将调用"st".startsWith("")并返回结果。但是您已经知道答案应该是true,所以这就是每个字符串都以开头的原因""



 类似资料:
  • 你好,我有一个问题与elasticsearch php api,Elastica。 如果我运行这个: 我得到0个结果

  • 问题内容: 我有一类这样的方法: 我如何在另一个类中调用此方法? 问题答案: 1. 如果要从中调用该方法的类位于同一包中,则创建该类的实例并调用该方法。 2. 使用 3. 最好有个赞等等。 例如:

  • 而且 不是应该都返回吗?它不是基元变量,在第二个代码中,即使在添加零之后,它也会打印。我知道装箱(对于从-128到127的整数),但是为什么装箱在第二段代码中起作用而不是在第一段代码中起作用呢?

  • 我在一节课上做了这个方法。我已经仔细检查过了,应该可以正常工作了。当我使用这个方法在main方法中运行一个对象时,我总是得到一个假返回,即使它应该是真的。 print语句不打印,所以我无法检查值是否正确传递,我还尝试让if语句也返回true,但它仍然返回false!它让我头疼,因为一切在逻辑上都是正确的。 有没有一个我不知道的规则,如果出现错误,布尔方法会自动返回false? 在主要方法中:

  • 关于方法何时应该返回CompletableFuture的一般准则是什么?假设有两个类A和B,其中类B有一个执行大量IO的方法performTask(),类A调用performTask()方法在Java可以使用以下方法编写多线程代码: < li >让方法的调用方决定是否使用ThreadPool异步执行方法。在这种情况下,A将异步调用performTask()方法,这样类B就不需要使其方法异步。 <

  • 问题内容: 我有以下简单的看法。为什么会导致此错误? 问题答案: 因为视图必须 返回 ,而不仅仅是调用它。将最后一行更改为