import java.util.Scanner;public class Book {
private static String title;
private static int pageNum;
public static String getTitle() {
return title;
}
public static void setTitle(String title) {
Book.title = title;
}
public static int getPageNum() {
return pageNum;
}
public static void setPageNum(int pageNum) {
Book.pageNum = pageNum;
}
    public Book(String title,int pageNum){     Scanner inputname=new Scanner(System.in);
System.out.println("请输入名称:");
this.title=inputname.next();
Scanner inputpage=new Scanner(System.in);
System.out.println("请输入页数:");
this.pageNum=inputpage.nextInt();
 
     if(pageNum<=200){
     System.out.println("页数在200页之内");
     }else if(pageNum>200){
     pageNum=200;
     System.out.println("页数大于200页,系统自动赋默认值:"+pageNum+"页");
     }
}
    public  static void detil(){
     System.out.println("书的名称为:"+title);
     System.out.println("书的页数为:"+pageNum);
    }
   

public static void main(String[] args){

  Book book=new Book(title,pageNum);
  book.detil();
 
 }}
输入300  执行的还是if语句,应该执行的else语句

解决方案 »

  1.   

    this.pageNum = inputpage.nextInt(); if (pageNum <= 200) {
    System.out.println("页数在200页之内");
    } else if (pageNum > 200) {
    pageNum = 200;
    System.out.println("页数大于200页,系统自动赋默认值:" + pageNum + "页");
    }
    你的pageNum有问题,你想让pageNum是控制台输入的,但是程序里面的PageNum是你传递的参数,和你输入的300没有关系。
    你把pageNum换成this.pageNum就没问题了。
      

  2.   

    遇到这种问题可以加断点调试一把,我帮你调试了一下,把过程给你看看,让你知道问题的原因所在,也是培养自己动手调试的能力。希望能帮到你
    第一张图片是你的this.pageNum = inputpage.nextInt();这句话,你将局部变量pageNum的值改为300,。
    第二张图是你的pageNum <= 200这地方的pageNum,此处是你传过来的那个参数。你现在有两种方法解决问题,一是楼上所说的把pageNum换成this.pageNum
    二是把参数取个别的名字,如pageNum1也是可以的
      

  3.   

    还有一种方法,就是用你写的get和set方法。不过建议使用楼上的两种方法!
    System.out.println("请输入名称:");
    setTitle(inputname.next());
    Scanner inputpage=new Scanner(System.in);
    System.out.println("请输入页数:");
    setPageNum(inputpage.nextInt());
        if(getPageNum()<=200){
          System.out.println("页数在200页之内");
         }else if(getPageNum()>200){
          pageNum=200;
          System.out.println("页数大于200页,系统自动赋默认值:"+pageNum+"页");
         }
    }
      

  4.   

    构造方法里引用错了,应该是this.pageNum.
     public Book(String title,int pageNum){ Scanner inputname=new Scanner(System.in);
    System.out.println("请输入名称:");
    this.title=inputname.next();
    Scanner inputpage=new Scanner(System.in);
    System.out.println("请输入页数:");
    this.pageNum=inputpage.nextInt();
     
     if(this.pageNum<=200){
     System.out.println("页数在200页之内");
     }else if(this.pageNum>200){
     pageNum=200;
     System.out.println("页数大于200页,系统自动赋默认值:"+pageNum+"页");
     }
    }