黑马程序员技术交流社区

标题: 输入中文开始结束九九乘法表,两种延伸 [打印本页]

作者: wangmiaosen    时间: 2015-12-19 21:40
标题: 输入中文开始结束九九乘法表,两种延伸
课堂上老师只是简单的写了一个代码,输入几,乘法表就打到 几,不够完善,没有容错机制,输入1到9之外的数字,就提示你请您输入1到9之间的数字。代码如下:
import java.util.Scanner;
class Demo {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                                while (true) {
                                        System.out.println("请输入一个数字");
                                        int a = sc.nextInt();
                                        if (a == 1101) {
                                                System.out.println("谢谢使用,欢迎下次光临");//如果输入1101,本循环结束,程序结束
                                                break ;
                                        }else if (a <1 || a >9){
                                                System.out.println("请您输入1到9之间的数字,谢谢");//如果输入1到9之外的数,跳出本次循环,继续下次
                                                continue;
                                         }
                                                print99(a);
                                }       
        }       

        public static void print99(int a ) {
                for (int x = 1;x <=a ;x++ ){
                        for (int y =1;y <=x ;y++ ){
                                System.out.print(y + "*" + x + "=" + y*x +"\t");
                        }
                        System.out.println();
                }
        }
}
本代码中容错机制中,continue 很是关键,并不是跳出循环,而是结束本次循环,继续下次循环。
2)上一个程序中,要想结束得输入指定的数字,感觉不够直观,能不能输入中文来开始和结束呢?这样就更人性化,于是有了下面的程序,Java中有一个功能就是把字符串形式的数字,变成整型的数字,所以,可以输入字符串,来控制开始或者结束,如果输入数字的话,进行转化,然后再运算。代码如下:


import java.util.Scanner;

class Demo {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("输入--开始 ---游戏开始");
                String str = sc.nextLine();
                if (str.equals("开始")) {
                        while (true) {
                                System.out.println("输入游戏结束,则游戏结束; 输入1-9的数据则游戏运行");
                                String str1 = sc.nextLine();
                                if (str1.equals("游戏结束")) {
                                        System.out.println("谢谢使用,欢迎下次光临");//如果输入1101,本循环结束,程序结束
                                        break;
                                }
                                if (Integer.parseInt(str1) < 1 || Integer.parseInt(str1) > 9) {
                                        System.out.println("请您输入1到9之间的数字,谢谢");// 如果输入1到9之外的数,跳出本次循环,继续下次
                                        continue;
                                }
                               
                                print99(Integer.parseInt(str1));
                        }
                }

        }

        public static void print99(int a) {
                for (int x = 1; x <= a; x++) {
                        for (int y = 1; y <= x; y++) {
                                System.out.print(y + "*" + x + "=" + y * x + "\t");
                        }
                        System.out.println();
                }
        }
}
这个程序的关键在于.equals 的使用,它用于判断字符串是否相同,另外一个是Integer.parseInt(str1)的使用,是把字符串形式的数字转换成整数类型,其他的跟上一个大同小异,我还有一个问题没有解决,那就是输入开始和结束的容错机制,输入其他的提示你输入开始或者结束。
交流QQ564626316




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2