当前位置:编程学习 > JAVA >>

java 问题 不执行else 后的执行语句

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语句 --------------------编程问答--------------------
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就没问题了。 --------------------编程问答-------------------- 遇到这种问题可以加断点调试一把,我帮你调试了一下,把过程给你看看,让你知道问题的原因所在,也是培养自己动手调试的能力。希望能帮到你


第一张图片是你的this.pageNum = inputpage.nextInt();这句话,你将局部变量pageNum的值改为300,。
第二张图是你的pageNum <= 200这地方的pageNum,此处是你传过来的那个参数。你现在有两种方法解决问题,一是楼上所说的把pageNum换成this.pageNum
二是把参数取个别的名字,如pageNum1也是可以的 --------------------编程问答-------------------- 还有一种方法,就是用你写的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+"页");
     }
} --------------------编程问答-------------------- 楼主最好不要定义成静态属性和方法。 --------------------编程问答-------------------- 不要用和类成员同名的本地变量、参数! --------------------编程问答-------------------- 构造方法里引用错了,应该是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+"页");
 }
}
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,