猿问

试图将我的头包裹在哈希图上并获取代码的问题

因此,我很难试图解决这个编码问题:他们希望我回答以下四个问题:“getValue(...)”将使用以下输入执行多少次,结果是什么?

(1) 获取值(“foo”, 0);

(2) 获取值(“柱”,2);

(3) 获取值(“巴兹”,0);

(4) 获取值(“富巴”, 1);

我知道前两个答案:

1) 将执行一次并返回 1 次

2)将执行1次并返回3但是最后两个问题(3,4)我不明白。任何人都可以帮助澄清这段代码到底在做什么,并提示答案是什么?

代码如下:

import java.util.HashMap;

import java.util.Map;


public class myClass {


private Map<String,Integer> map;


public myClass() {


map = new HashMap<>();


map.put("foo", 1);


map.put("bar", 3);


}


public int getValue(String input, int numRetries) throws Exception {


try {


  return map.get(input);


}


catch (Exception e) {


  if (numRetries > 3) {


    throw e;


  }


  return getValue(input, numRetries + 1);


}


}

提前感谢您。


子衿沉夜
浏览 75回答 1
1回答

呼啦一阵风

您在(1)和(2)中正确回答的代码尝试从HashMap中获取值,因为它的键。getValue() 函数是一个递归函数,这意味着它根据“重试次数”值多次调用自己(3)代码自称4次(其中numRetry从0,1,2,3开始,然后“>3”子句变为真并引发异常)(4) 代码调用自身 3 次(其中 numRequiries 从 1,2,3 进展,然后 '>3' 子句变为 true 并引发异常)
随时随地看视频慕课网APP

相关分类

Java
我要回答