【问题标题】:Why am i only getting towards else statement? [closed]为什么我只接近 else 声明? [关闭]
【发布时间】:2020-10-01 01:00:03
【问题描述】:

请检查以下程序并指出错误。无论输入是什么,我都会得到“不好”的结果。

package timePass;
public class TimePass{
private String password;

public String getPassword() {
    return password;
}

    public void setPassword() {
        password="no";
        }
    }
package timePass2;

import java.util.Scanner;

import timePass.TimePass;

public class TimePass2{
    public static void main(String[] args) {
        TimePass obj= new TimePass();
        Scanner sc= new Scanner(System.in);
        String p= sc.nextLine();
        TimePass tp= new TimePass();

        if(p.equals(tp.getPassword())) {System.out.println("ok");}
        else {System.out.println("not ok");}

    }
}

【问题讨论】:

  • 只是一个提示:要么使用 IDE(如 IntelliJ 或 Eclipse)并调试程序执行,要么通过打印来进行穷人的调试取出布尔变量woo 的赋值所涉及的值。特别要问自己tp.getPassword() 返回的值是什么,为什么会这样?
  • 请注意,这里的社区不会取代其他优秀的在线资源,例如 tutorials 或阅读有关 Java 编程的书籍。使用 tour 了解 Stack Overflow 的工作原理并阅读 How to Ask a Good Question。还可以查看help center 了解您可以提出哪些问题。

标签: java if-statement call private encapsulation


【解决方案1】:

tp 的密码尚未设置。你必须显式调用tp.setPassword(),否则tp.password就是null

【讨论】:

  • 您能详细说明一下吗?我是初学者,仍然没有理解你的意思。
  • 你知道默认构造函数的作用和调用位置吗?
  • 默认构造函数是一个自动生成的构造函数,它设置一个空值。
  • 我在哪里调用它?我认为我仍然应该专注于构造函数。 :(
  • 你会写:“默认构造函数是一个自动生成的构造函数,它设置一个空值。”你现在明白了吗?如果不是,则在原始代码中的TimePass tp= new TimePass(); 之后插入System.out.println(tp.getPassword());,您将看到它
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
相关资源
最近更新 更多