小编con*_* II的帖子

检查"int"类型的"boolean"结果

我正在学习Java,来自C,我发现这种boolean类型的语言之间有一个有趣的区别.在C中没有bool/ ean所以我们需要使用数字类型来表示布尔逻辑(0 == false).

我想在Java中不起作用:

int i = 1;
if (i)
    System.out.println("i is true");
Run Code Online (Sandbox Code Playgroud)

也没有通过类型转换来改变条件:

if ((boolean)i)
Run Code Online (Sandbox Code Playgroud)

除了做以下事情之外:

if ( i != 0 )
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以对int类型进行C-ish逻辑检查吗?只是想知道是否有任何Java技巧允许非布尔类型的布尔逻辑像这样.


编辑:
上面的例子非常简单,并使自己适应狭隘的思维范围.当我最初问这个问题时,我也在考虑函数调用的非布尔返回.例如Linux fork()调用.它本身不会返回int,但我可以很好地使用条件的数字返回值,如:

if( fork() ) {
    // do child code
Run Code Online (Sandbox Code Playgroud)

这允许我处理子项的条件中的代码,而不是为父项处理代码(或者对于错误的负返回结果).

所以我目前还不知道足够的Java给出一个好的"Java"示例,但那是我最初的意图.

java int boolean logical-operators

29
推荐指数
3
解决办法
8万
查看次数

JNI C++ DLL - 'UnsatisfiedLinkError:%1不是有效的Win32应用程序'

在我深入研究实际代码之前,我试图让JNI正常工作,但是在我从C++编译DLL并运行我的Java应用程序后,我得到:

Exception in thread "main" java.lang.UnsatisfiedLinkError: <snip>\workspace\JNI test\native\jnitest.dll: %1 is not a valid Win32 application
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(Unknown Source)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at net.condorcraft110.jnitest.JNITest.main(JNITest.java:11)
Run Code Online (Sandbox Code Playgroud)

谷歌搜索了一下,我知道这通常是由于尝试使用32位JVM加载64位DLL引起的.但是,我的JVM是64位,sun.arch.data.model相当于64位.

我的makefile:

CLASSPATH = ../bin

vpath %.class $(CLASSPATH)

all : jnitest.dll

jnitest.dll : jnitest.o
    g++ -m64 -Wl,--add-stdcall-alias -shared -o $@ $<

jnitest.o : jnitest.cpp jnitest.h
    g++ -m64 -I"C:\Program Files\Java\jdk1.7.0_51\include" -I"C:\Program Files\Java\jdk1.7.0_51\include\win32" -c $< -o $@

jnitest.h : net/condorcraft110/jnitest/JNITest.class
    javah -verbose -classpath $(CLASSPATH) -o …
Run Code Online (Sandbox Code Playgroud)

c++ java windows dll java-native-interface

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

ObjectInputStream的(socket.getInputStream()); 不起作用


我正在编写一个类来与服务器进行通信,但是当它尝试在输入流的帮助下构造ObjectInputStream时程序正在冻结.Theres没有Exception,程序仍然在运行,但挂起在它试图构造ObjectInputstream的行中.

下面是我的问题所在方法的代码:

@Override
public void connect(String ip, int port) throws UnknownHostException, IOException {
    Socket socket = new Socket(ip, port);
    out = new ObjectOutputStream(socket.getOutputStream());
    InputStream is = socket.getInputStream();
    in = new ObjectInputStream(is);
}
Run Code Online (Sandbox Code Playgroud)

这是整个班级的代码:

package Client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;


public class MessageStreamerImpl implements MessageStreamer {
    ObjectOutputStream out;
    ObjectInputStream in;

    public MessageStreamerImpl(String ip, int port) throws UnknownHostException, IOException{
        connect(ip, port);
    }

    public MessageStreamerImpl(){
    }

    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

java sockets io

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