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