前言:
学了java的基础语法,但运用还不是很流畅,所以练习些案例,整理些心得。
编程思路思想
1,实验由多个方法组成,所以碰到需要实现的程序时,需要先分析程序,思考程序可以拆分成什么功能,然后根据功能去编写方法,尽可能实现每一个方法对应一项功能。
2,当程序划分成每一个方法时,分析方法是否需要接受数据
3,随即分析方法是是否需要返回数据
4,遇到需要通过判断数据在哪个区间执行的功能时,用if分支结构比较有效
5,遇到需要通过判断数据匹配哪个值执行的功能时,用switch分支结构有效
案例
练习1:飞机票案例
用户购买机票时,机票原价会按照淡季,旺季,头等舱还是经济舱的情况进行相应的优惠, 优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季, 头等舱7折,经济舱6.5折,请开发程序计算出用户当前机票的优惠价
public static void main(String[] args) {
double pri=sys(1000, 11, "头等舱");
System.out.println(pri);
}
public static double sys(double pri, int mon, String cang) {
if (mon >= 5 && mon <= 10) {
switch (cang) {
case "头等舱":
pri *= 0.9;
break;
case "经济舱":
pri *= 0.85;
break;
}
} else {
switch (cang) {
case "头等舱":
pri *= 0.7;
break;
case "经济舱":
pri *= 0.65;
break;
}
}
return pri;
}
实验成功。
但实验时所遇到的问题是:如果在方法中设定了输出结果及返回值,那么在main方法中引用输出时,结果会输出两遍。
练习2:生成随机验证码
public class textdemo1 {
public static void main(String[] args) {
String re =code(5);
System.out.println(re);
}
public static String code(int n){
Random r = new Random();
String fu = "";
for (int i = 1; i <= n; i++) {
int la = r.nextInt(3);
switch (la){
case 0 :
fu += r.nextInt(10);
break;
case 1:
char n1= (char)(r.nextInt(26)+65);
fu += n1;
break;
case 2:
char n2 =(char)(r.nextInt(26)+97);
fu += n2;
break;
}
}
return fu;
}
}
实验成功
实验时遇到的问题:同行输出数据需要用String相连,不然有可能会相加
实验3:评委打分,求出截断平均值(去除最大值及最小值)
public class textdemo2 {
public static void main(String[] args) {
System.out.println(la(6));
}
public static double la(int num){
int [] lol = new int[num];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < lol.length; i++) {
System.out.println("请输入第"+(i +1)+"位老师的成绩");
lol[i]=sc.nextInt();
}
int sum = 0;
int max = lol[0];
int min = lol[0];
for (int i = 0; i < lol.length ; i++) {
sum += lol[i];
if (max < lol[i]){
max=lol[i];
}
if (min > lol[i]){
min = lol[i];
}
}
double re=(sum-max-min)/(num -2);
return re;
}
}
实验成功
遇到的问题:1,最大索引为“length-1”,不是length;2,两种情况最好分别写代码。
实验4:数字加密
某系统的数字密码是一个四位数,如1983,为了安全,需要加密后再传输,加密规则是对密码中的每位数,都加5,在对10求余数,最后将所有数字顺序反转,得到一串加密后的新数请设计出满足本需求的加密程序
public static void main(String[] args) {
System.out.println("结果为:"+la(1983));
}
public static String la (int num){
int [] nums = ll(num);
String fu = "";
for (int i = 0; i <nums.length ; i++) {
nums[i] = (nums[i] + 5)%10;
}
re(nums);
for (int i = 0; i < nums.length; i++) {
fu +=nums[i];
}
return fu;
}
public static void re (int [] nums){
for (int i = 0, j = nums.length -1; i < j ; i++,j--) {
int temp = nums[j];
nums[j]= nums[i];
nums[i]=temp;
}
}
public static int [] ll (int num){
//1983拆成数组
int [] nums = new int[4];
nums [0] = num / 1000 ;
nums [1] = (num /100)%10;
nums [2] = (num /10)%10;
nums [3] = num %10;
return nums;
}
实验成功
没遇到太多的问题
练习5:复制数列
请把一个整形数组,例如存了数据:11,22,33,拷贝成一个一模一样的新数组出来
public static void main(String[] args) {
int [] num = {11,22,33};
int [] num1 = la(num);
ll(num1);
}
public static void ll(int [] num){
System.out.print("[");
for (int i = 0; i < num.length ; i++) {
System.out.print(i == num.length-1? num[i]:num[i]+",");
}
System.out.print("]");
}
public static int [] la (int []num){
int [] num1 = new int [num.length];
for (int i = 0; i < num.length; i++) {
num1[i] = num [i];
}
return num1;
}
实验成功
没有遇到大问题
总结:
需要注意空行和空列的问题,同时需要注意方法的输出引用及返回值的使用!
撒花!
---------------------------------------------------------------------------------------------------------------------------------
最后
如果您看到了这篇文章,同时您也在学习java,希望您阅读这篇文章,希望与您一起讨论