我会保持简短,我有一个Dog
类如下:
public class Dog
{
public void Foo()
{
System.out.println("Right Call");
}
public void Boo()
{
System.out.println("Wrong Call");
}
}
Run Code Online (Sandbox Code Playgroud)
和以下主要方法:
HashMap<String, Method> map = new HashMap<String, Method>();
Dog d = new Dog();
Method[] method = d.getClass().getMethods();
map.put("foo", method[0]);
Method a = map.get("foo");
try {
a.invoke(d, null);
} catch (IllegalAccessException | IllegalArgumentException
| InvocationTargetException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
每当我再次运行它时,它只是任意给出Right Call
或Wrong Call
输出.
我需要确保每次放置"foo"
密钥时,都必须调用Foo()
方法,而不是Boo()
.
显然,它并没有缓解我的"方法调用"问题.我怎样才能克服这个问题?我每次都必须调用正确的方法.我对这些反思很新,有什么我不应该做的,或者我做错了什么?或者有更好的方法来实现此方法调用?
编辑:我也试过LinkedHashMap
,但结果是一样的.
谢谢.
我试图在Android Studio中为我的项目添加一些图像但是我注意到我只有drawable
文件夹,其他(drawable-hdpi
等)文件夹都没有.
所以我决定手工制作它们,只需创建具有适当名称的文件夹并放置图像:
但它仍然一直给出我无法处理的错误.为什么会出现此错误以及如何解决?
谢谢.
当我使用rand()
或使用任何常量值分配数组值时,我对此C++代码段的行为有何不同感到非常困惑.
const int MIN_SIZE = 10000;
const int MAX_SIZE = 100000;
int main()
{
for(j = MIN_SIZE; j <= MAX_SIZE; j += MIN_SIZE) {
int *arrPtr = new int[j];
for(int i = 0; i < j; i++)
arrPtr[i] = 1; //When I put rand() here, it works fine but in any constant it gives stack overflow
quickSort(arr, 0, j - 1);
delete []arrPtr;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码基本上创建了一个动态分配的数组,j
其大小MIN_SIZE
为每一轮增加(10,000)并为每个索引分配一些特定的整数.在赋值之后,它将使用我将在下面提供的快速排序算法进行排序,然后在完成后释放该数组.整件事重复达到MAX_SIZE
(100,000).
这是我的Quicksort代码:
void quickSort(int *arr, int front, …
Run Code Online (Sandbox Code Playgroud) 我目前正在学习编程语言概念和语用学,因此我觉得我需要帮助来区分声明性语言系列的两个子分支.
请考虑以下分别用Scheme和Prolog编写的代码片段:
;Scheme
(define gcd
(lambda (a b)
(cond ((= a b) a)
((> a b) (gcd (- a b) b))
(else (gcd (- b a) a)))))
Run Code Online (Sandbox Code Playgroud)
%Prolog
gcd(A, B, G) :- A = B, G = A.
gcd(A, B, G) :- A > B, C is A-B, gcd(C, B, G).
gcd(A, B, G) :- B > A, C is B-A, gcd(C, A, G).
Run Code Online (Sandbox Code Playgroud)
我不明白的是:
这两种不同的编程语言如何表现不同?
我们在哪里做出差异,以便将它们归类为基于功能或基于逻辑的编程语言?
就我而言,它们完全相同,调用递归函数直到它终止.