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; } } } }
需要使用循环,多选择语句,方法调用。这一部分用户的自由度相对较大。
这是我使用第三部分的一个截图
这次小程序的编写思维可以应用到各种程序中,首先对其框架进行构思,然后进行编写;对于框架的构思刚开始编程时有必要写仔细,到后面可以粗略一些。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署