Java学习二

  第二次Java课,这次课学习了编程的思维,在这之前自己阅读完了周爱民先生的《大道至简:软件工程实践者的思想》。我认为现在编程最忌讳的是,拿到题目便开始写。不管是写程序还是写项目,写代码开始前,我认为应该先整体浏览,构建出框架,在纸上画出自己的思维导图。这样能够使自己的代码尽可能地接近完美。在写代码的过程中便是顺序、分支、循环的使用。

  这次可完成了一次“框架”的练习。完成一个四则运算随机出题的小程序。

  程序按难度分为三部分:1、随机出固定数目的四则运算;2、随机出用户规定数目的四则运算,题目不能重复;3、用户可以规定四则运算范围、选择不同出题方式。

//1、固定数目四则运算
import java.util.Random;

public class erzhu{
    public static void main(String[] args){
    Random r=new Random();
        int[] m=new int[100];
        int[] n=new int[100];for(int i=0;i<number;i++) {
            m[i]=r.nextInt(100)+1;
            n[i]=r.nextInt(100)+1;
            for(int j=0;j<i;j++) {
                if(m[i]==m[j]&&n[i]==n[j]) {
                    m[i]=r.nextInt(100)+1;
                }
            }
            int k=(int)(Math.random()*4);
            switch(k) {
            case 0:System.out.println(m[i]+"+"+n[i]+"=");break;
            case 1:System.out.println(m[i]+"-"+n[i]+"=");break;
            case 2:System.out.println(m[i]+"*"+n[i]+"=");break;
            case 3:System.out.println(m[i]+"/"+n[i]+"=");break;
            }
        }
}
}

  在第一部分我便规定题目不重复,如果直接不定义便会输出多个重复题目。对于重复的判断可以使用集合存储后在比较,也可以使用数组直接用下标来比较,这里我使用的是数组。

//2、规定输出题目数
import java.util.Random;
import java.util.Scanner;

public class erzhu{
    public static void main(String[] args){
    Random r=new Random();
        int[] m=new int[100];
        int[] n=new int[100];
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入题目数:");
        int number=sc.nextInt();
        for(int i=0;i<number;i++) {
            m[i]=r.nextInt(100)+1;
            n[i]=r.nextInt(100)+1;
            for(int j=0;j<i;j++) {
                if(m[i]==m[j]&&n[i]==n[j]) {
                    m[i]=r.nextInt(100)+1;
                }
            }
            int k=(int)(Math.random()*4);
            switch(k) {
            case 0:System.out.println(m[i]+"+"+n[i]+"=");break;
            case 1:System.out.println(m[i]+"-"+n[i]+"=");break;
            case 2:System.out.println(m[i]+"*"+n[i]+"=");break;
            case 3:System.out.println(m[i]+"/"+n[i]+"=");break;
            }
        }
}
}

对于第二部分,直接使用Scanner;

//3、用户可选择出题方式

import java.util.Random;
import java.util.Scanner;

public class erzhu {
    static int num;
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请定义数值范围");
        num=sc.nextInt();
        System.out.println("请选择:1、加减;2、加减乘除;3、带括号加减;4、带括号加减乘除");
        int choice=sc.nextInt();
        switch(choice) {
        case 1:jiajian(); break;
        case 2:zong();break;
        case 3:kuohao1();break;
        case 4:kuohao2();break;
        }
    }
    
    public static void jiajian() {
        Random r=new Random();
        int[] m=new int[100];
        int[] n=new int[100];
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入题目数:");
        int number=sc.nextInt();
        for(int i=0;i<number;i++) {
            m[i]=r.nextInt(num)+1;
            n[i]=r.nextInt(num)+1;
            for(int j=0;j<i;j++) {
                if(m[i]==m[j]&&n[i]==n[j]) {
                    m[i]=r.nextInt(100)+1;
                }
            }
            int k=(int)(Math.random()*2);
            switch(k) {
            case 0:System.out.println(m[i]+"+"+n[i]+"=");break;
            case 1:System.out.println(m[i]+"-"+n[i]+"=");break;
            }
        }
    }

    public static void zong() {
        Random r=new Random();
        int[] m=new int[100];
        int[] n=new int[100];
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入题目数:");
        int number=sc.nextInt();
        for(int i=0;i<number;i++) {
            m[i]=r.nextInt(num)+1;
            n[i]=r.nextInt(num)+1;
            for(int j=0;j<i;j++) {
                if(m[i]==m[j]&&n[i]==n[j]) {
                    m[i]=r.nextInt(100)+1;
                }
            }
            int k=(int)(Math.random()*4);
            switch(k) {
            case 0:System.out.println(m[i]+"+"+n[i]+"=");break;
            case 1:System.out.println(m[i]+"-"+n[i]+"=");break;
            case 2:System.out.println(m[i]+"*"+n[i]+"=");break;
            case 3:System.out.println(m[i]+"/"+n[i]+"=");break;
            }
        }
    }

    public static void kuohao1() {
        Random r=new Random();
        int[] m=new int[100];
        int[] n=new int[100];
        int[] a=new int[100];
        int[] b=new int[100];
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入题目数:");
        int number=sc.nextInt();
        for(int i=0;i<number;i++) {
            m[i]=r.nextInt(num)+1;
            n[i]=r.nextInt(num)+1;
            a[i]=r.nextInt(num)+1;
            b[i]=r.nextInt(num)+1;
            for(int j=0;j<i;j++) {
                if((m[i]==m[j]&&n[i]==n[j])||(a[i]==a[j]&&b[i]==b[j])) {
                    m[i]=r.nextInt(num)+1;
                    a[i]=r.nextInt(num)+1;
                }
            }
            int k=(int)(Math.random()*4);
            switch(k) {
            case 0:System.out.println("("+m[i]+"+"+n[i]+")"+"+"+a[i]+"+"+b[i]+"=");break;
            case 1:System.out.println("("+m[i]+"-"+n[i]+")"+"-"+b[i]+"-"+a[i]+"=");break;
            case 2:System.out.println(m[i]+"+"+"("+n[i]+"+"+a[i]+")"+"+"+b[i]+"=");break;
            case 3:System.out.println("("+m[i]+"-"+n[i]+")"+"+"+a[i]+"-"+b[i]+"=");break;
            }
        }
    }

    public static void kuohao2() {
        Random r=new Random();
        int[] m=new int[100];
        int[] n=new int[100];
        int[] a=new int[100];
        int[] b=new int[100];
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入题目数:");
        int number=sc.nextInt();
        for(int i=0;i<number;i++) {
            m[i]=r.nextInt(num)+1;
            n[i]=r.nextInt(num)+1;
            a[i]=r.nextInt(num)+1;
            b[i]=r.nextInt(num)+1;
            for(int j=0;j<i;j++) {
                if((m[i]==m[j]&&n[i]==n[j])||(a[i]==a[j]&&b[i]==b[j])) {
                    m[i]=r.nextInt(num)+1;
                    a[i]=r.nextInt(num)+1;
                }
            }
            int k=(int)(Math.random()*4);
            switch(k) {
            case 0:System.out.println("("+m[i]+"+"+n[i]+")"+"+"+a[i]+"*"+b[i]+"=");break;
            case 1:System.out.println("("+m[i]+"-"+n[i]+")"+"-"+b[i]+"/"+a[i]+"=");break;
            case 2:System.out.println(m[i]+"+"+"("+n[i]+"+"+a[i]+")"+"*"+b[i]+"=");break;
            case 3:System.out.println("("+m[i]+"-"+n[i]+")"+"/"+a[i]+"-"+b[i]+"=");break;
            }
        }
    }
}

需要使用循环,多选择语句,方法调用。这一部分用户的自由度相对较大。

这是我使用第三部分的一个截图

 

   这次小程序的编写思维可以应用到各种程序中,首先对其框架进行构思,然后进行编写;对于框架的构思刚开始编程时有必要写仔细,到后面可以粗略一些。

posted on 2021-09-18 14:52  跨越&尘世  阅读(26)  评论(0编辑  收藏  举报