0

我正在尝试通过使用页面在通过 java 获取页面内容时给我的结果来在 java 中创建登录系统,就像我从获取数据时一样

    http://localhost/java.php?un=dubking&password=password

当登录凭据正确时,该页面只会将“true”显示为 html,但是当我使用包含来自该页面的数据的数组时,在 if 语句中实际上包含“true”时,if 语句不起作用,是我做错了什么,或者这在 Java 中是不可能的吗?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
class test2 {
    public void calc() {
        try { 
            URL yahoo = new URL("http://localhost/java.php?un=" + username + "&password=" + password); 
            BufferedReader in = new BufferedReader( 
                    new InputStreamReader(yahoo.openStream())); 
            String inputLine; 

            while ((inputLine = in.readLine()) != null) { 
                // Process each line.
                String html = inputLine;
                if (html == "true") {
                    System.out.print("You have successfully logged in.");
                } else {
                    if (html == "false") {
                        System.out.println("Wrong username or password.");
                    }
                    if (html != "true" && html != "false") {

                        System.out.println("something went wrong.");
                        System.out.println(html);
                    }
                }
            } 
            in.close(); 

        } catch (MalformedURLException me) { 
            System.out.println(me); 

        } catch (IOException ioe) { 
            System.out.println(ioe); 
        } 

    }
}
4

2 回答 2

4

用于String#equals比较String内容。运算符比较==对象引用。String返回的 from将BufferedReader#readLine是与Strings您的应用程序中使用的任何实习生不同的对象(例如“true”、“false”)。

最好还是使用equalsIgnoreCase来处理任何变化以防万一。此外,一个 Joda 条件将防止一个NullPointerException应该htmlnull

if ("true".equalsIgnoreCase(html)) {
于 2013-07-07T22:38:30.983 回答
0

您正在尝试使用 == 和 != 检查字符串是否相等,但这永远不会奏效。您需要将 == 更改为 .equals 。像这样

"true".equals(html)

或者

!"true".equals(html)
于 2013-07-07T22:38:41.500 回答