不只是九九乘法表

九九乘法表的简单实现

  • 这里直接简单粗暴的在类中定义一个打印固定九九乘法表的方法
    • 用两个嵌套的行和列 for 循环就可以完成
    • 要求打印出这样的九九乘法表

9*9 的乘法表

int mutiS = 9;

for(int r = 1; r <= mutiS ; r++){
	for(int c=1; c<=r; c++){
		System.out.print(r+"×"+c+"="+c*r);
		if(c!=r){
			System.out.print(",\t");
		}
	}
	System.out.println();
}

line1 是九九乘法表的大小,显然就是9
line3 和 line4 分别是行和列循环
line5 是打印一个乘法式子的语句
line6 中的 if 判断是为了在同一行的乘式与乘式之间添加逗号,控制当前行 r 的最后一个式子 ,也就是 r × r 的后面不要出现逗号。\t 是制表符,为了能让每一行的相同列都能出现在同一个横坐标上
line10 是为了在每一行的乘式从 r × 1 到 r × r 都打印完之后进行换行

【功能扩展】想要打印任意大的乘法表

  • 那么 mutiS 要作为参数传入方法中
  • 在调用方法时就要给 mutiS 定一个值
	public static void mutiOp(int mutiS){
		for(int r = 1; r <= mutiS ; r++){
			for(int c=1; c<=r; c++){
				System.out.print(r+"×"+c+"="+c*r);
				if(c!=r){
					System.out.print(",\t");
				}
			}
			System.out.println();
		}
		
	}	
	
	public static void main(String[] args) {
		mutiOp(11);
	}

【功能补全】可以在控制台输入数字与程序进行交互

  • 用 import java.util.Scanner;类接收控制台输入
Scanner scan = new Scanner(System.in);
  • 用户输入的内容很有可能不是数字,要增加一个判断逻辑
    • 如果下一个内容不是 Int 类型的话,就打印一条提示语句
if(scan.hasNextInt()){
		int n = (int)scan.nextInt();
		MutiTable m = new MutiTable(n);
		System.out.println("乘法表打印成功~");
}else{
		System.out.println("输入数字非法,有可能过大或非数字类型。请重新输入");
}

【功能改善】让 MutiTable 成为一个工具类

  • 在其他类中建立 MutiTable 类的对象时,传入一个参数,MutiTable 自动根据传入的参数来打印乘法表
  • MutiTable 的完整代码如下,能够直接打印任意大小的乘法表
package chapter4;

/**
 * 描述:这个类可以完成打印任意大小的乘法表的功能
 * @author Administrator
 * 
 */

public class MutiTable {
	
	public MutiTable() {
	}		
	public MutiTable(int mutiS) {
		MutiTable.mutiOp(mutiS);
	}
	
	/*
	 * 方法
	 * @method mutiOp 完成计算+打印乘法表的功能,表的大小取决于传入的mutiS参数
	 */
	public static void mutiOp(int mutiS){
		for(int r = 1; r <= mutiS ; r++){
			for(int c=1; c<=r; c++){
				System.out.print(r+"×"+c+"="+c*r);
				if(c!=r){
					System.out.print(",\t");
				}
			}
			System.out.println();
		}
	}	
}
  • 要在测试类中假如判断逻辑,控制传入MutiTable 类mutiOp()方法中的参数是整型
  • 两个类要合并成一个类,直接将 main() 方法移植到 MutiTable 中,再导入 java.util.Scanner 包即可
package chapter4;

import java.util.Scanner;

public class TestMT {

	public TestMT() {

	}

	public static void main(String[] args) {

		System.out.println("你想要多大的乘法表?请输入一个整数:");
		Scanner scan = new Scanner(System.in);
		if(scan.hasNextInt()){
			int n = (int)scan.nextInt();
			MutiTable.mutiOp(n);
			System.out.println("乘法表打印成功~");
		}else{
			System.out.println("输入数字非法,有可能过大或非数字类型。请重新输入");
		}
	}
}

米五的猜想

  • 我们是用户啊,想要输入什么都可以?一不小心手残就……

    • 死亡输入-----输入数字过大
      输入一个过大的数字

    • 死亡输入-----不想输入数字
      在这里插入图片描述

      在这里插入图片描述

  • 如果想要连续打印不同大小的乘法表

    • 让判断逻辑运行在 while(true){} 循环内,如果检测到用户输入指定字符串比如“exit”或者“quit”之类的就 break;
  • 这个程序还有一个漏洞就是没有判断用户输入的是正整数还是负整数

    • 那么最好在提示上也把“整数”换成“正整数”,然后判断输入的是 Int 之后还要再判断是否大于 0 啊
    • 最后要灵魂提问那个用户,输入的真的是一个正整数吗?是不是想要一个不正经的乘法表?对不起,没有这项服务 。开玩笑开玩笑,用户爸爸永远是对的。此项功能正在开发中……如果需要加快开发进度,请表扬~ 请鼓励~ 请支持~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值