小编Rao*_*uke的帖子

如何在Android Studio中使用NDK时修复"javah"错误?

我正在尝试设置NDK,以便我可以在Android Studio 0.5.1中的Android应用程序中添加C/C++代码.我最终试图在gradle构建期间编译它,并正确处理APK生成.与教程在此视频中解释的非常相似:https://www.youtube.com/watch?v = kLKfxfbz40.我整个过程的第一步是下载Android SDK.

但是,我遇到了错误:

'javah' is not recognized as an internal or external command,
 operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

输入命令后:

 javah -d jni -classpath C:\Android\sdk\platforms\android-   

 19\android.jar;..\..\build\classes\debug com.example.ndksample.MainActivity
Run Code Online (Sandbox Code Playgroud)

我在网上简要介绍了一下,让我再次尝试下载Java™平台,标准版开发套件(JDK).没有固定的.有人能解释我收到此错误的原因吗?谢谢.

sdk android-ndk android-studio

2
推荐指数
1
解决办法
4973
查看次数

控制语句'if((i + j)&1)'背后的逻辑是什么?

该程序声明一个8x8字符数组,然后使用循环将以下数据存储到数组中(每个数组元素一个字符).然后它将此数组打印到屏幕:

BRBRBRBR

RBRBRBRB

BRBRBRBR

RBRBRBRB

BRBRBRBR

RBRBRBRB

BRBRBRBR

RBRBRBRB

该程序工作正常.但是,我无法理解if语句背后的逻辑:

if((i+j) & 1)
Run Code Online (Sandbox Code Playgroud)

我不明白如果添加i + j'和'1是真的设置数组到'R',否则将其设置为'B'.这可能有一个相当明显的答案,但我是C的新手.有人可以帮助澄清为什么这个程序适用于这个逻辑?谢谢!

#include <stdio.h>
#include <stdlib.h>


int main(void)
{
    int i, j;
    char letter[8][8];
    for(i=0; i<8; i++) {
        for(j=0; j<8; j++) {
            //This if-statement
            if ((i+j) & 1)
                letter[i][j] = 'R';
            else 
                letter[i][j] = 'B';
            printf("%c" , letter[i][j]);
        }
        printf("\n");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c arrays char

1
推荐指数
1
解决办法
596
查看次数

如何使用 Lambda 将 List&lt;String&gt; 转换为 Map&lt;String, Long&gt;,其中键是字符串,值是元音数量?

鉴于:

List<String> myStrings = Arrays.asList("broom", "monsoon");
Run Code Online (Sandbox Code Playgroud)

返回:

Map<String, Long> stringToNumberOfVowels = Map.of("broom", 2, "monsoon", 3);
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

Map<String, Long> vowelsMap = Stream.of("broom").flatMapToInt(String::chars).filter("aeiou".indexOf(c) >= 0).mapToObj(c -> "aeiou".indexOf(c)>=0 ? "broom" : "").collect(Collectors.groupingBy(Function.indenty(), Collectors.counting()));

for(Map.Entry<String, Long> a : vowelsMap.entrySet()) { System.out.println(a.getKey() + "==>"); System.out.println(a.getValue()); }
Run Code Online (Sandbox Code Playgroud)

我的输出(仅适用于流中传递的 1 个字符串):

扫帚==> 2

期望的输出:

扫帚==> 2

季风==> 3

java lambda dictionary java-stream collectors

0
推荐指数
1
解决办法
140
查看次数