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语句
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语句
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也是可以的
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+"页");
}
}
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+"页");
}
}