Java:向整形数组插入元素

原题:编写程序。向整形数组的指定位置插入元素,并输出插入前后数组的值。

参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package cn.puruidong.accp_14;

/**
 * @author PuRuidong
 *
 */
/*
 * 编写程序。向整形数组的指定位置插入元素,并输出插入前后数组的值。
 * 书本:306页
 */
import java.util.Scanner;
public class Fivenum {

    /**
     * @param args
     */
    private int num [] = new int[] {10,20,30,55,99};//原数组
    private int no [] = new int [num.length+1];//新数组
    private static Scanner sc = new Scanner (System.in);
    private static int index ;//录入想插入的位置
    private static int value ;//录入想插入的值
   
    public void show (int index ,int value){
        ////////////输出插入前的数组
        System.out.println("插入前的数组:");
        for (int i=0;i<num.length;i++){//输出插入前的数组
            System.out.print(num[i]+" ");
        }
        /////赋值数组
        for (int c=0;c<num.length;c++){
            no[c] = num[c];
        }
        System.out.println();
            System.out.println("请输入想插入的位置(0~4):");
            index = sc.nextInt(); //录入想插入的位置
            System.out.println("请输入想插入的数值:");
            value = sc.nextInt(); //录入想插入的值
       
        for (int j=no.length-1;j>index;j--){ ////元素后移
            no[j] = no[j-1];
        }
        no[index] = value; //将 value的值放在index位置
        System.out.println("插入后的数组:");
        /////输出插入后的数组
        for (int k=0;k<no.length;k++){
            System.out.print(no[k]+" ");
        }
    }
   
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    Fivenum center = new Fivenum ();
    center.show(index, value);

    }

}

Java:带参方法查找客户

根据需要查找客户姓名,给出查找结果。

  1. 录入客户姓名;
  2. 输出刚才录入到数组中的姓名;
  3. 录入需要查找的姓名;
  4. 跟数组中的姓名一一比对;
  5. 输出结果。

参考代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package cn.puruidong.accp_13;

/**
 * @author PuRuidong
 *
 */
/*
 * 查找客户姓名
 * 书本:272页
 */
import java.util.Scanner ;
public class User {
    private String choose ;//定义选择是否继续查找
    private String seachname ;//定义在数组中查找名字
    Scanner sc = new Scanner (System.in);//定义录入
    String name1 [] = new String [5];//定义数组存储客户的姓名
   
    public void show (){//作用:循环录入姓名
        for (int i=0;i<name1.length;i++){ //循环录入
            System.out.println("请输入客户的姓名:");
            name1[i]=sc.next();
            System.out.println("继续输入吗(y/n):");
            choose = sc.next();
            if (!"y".equals(choose)){ //当输入的不等于y时,退出循环
                break;
            }
        }
       
    }
   
    public boolean newshow (String name){ //作用:循环输出原数组,并且在数组中查找名字
        boolean fild = false ; //定义返回值
        for (int i=0;i<name1.length;i++){ //输出原数组
            System.out.print(name1[i]+"\t");
        }
        System.out.println();
        System.out.println();
        System.out.println("请输入您要查找的姓名:");
        seachname = sc.next(); //录入需要查找的新名字
        System.out.println("*******查找结果*******");
        for (int i=0;i<name1.length;i++){ //输出查找结果
            if (seachname.equals(name1[i])){
                System.out.println("找到了!");
                System.exit(0);//当找到的时候,使用此方法结束循环.也可以使用break(需要添加一些代码,否则会多输出)来结束.
            }
        }
        System.out.println("不好意思,找不到这个人耶!");
        return fild ;
    }
   
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        User center = new User ();//创建对象
        String name=""; //定义名字的String
        center.show();
        System.out.println("****************************");
        System.out.println("客户姓名列表:");
        System.out.println("****************************");
        center.newshow(name);
    }
}

练习:34

原题:现有一个数组array,其中有数字[1,3,-1,5,-2]
要求创建一个新数组newArray,将上述数字逆序输出,并且小于0的按0输出.
输出结果为:[0,5,0,3,1]

参考代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
 * 原题:现有一个数组array,其中有数字[1,3,-1,5,-2]
 * 要求创建一个新数组newArray,将上述数字逆序输出,并且小于0的按0输出.
 * 输出结果为:[0,5,0,3,1]
 */
public class P170_5{
    public static void main (String[]args){
        int array[]=new int[] {1,3,-1,5,-2};//定义数组array存储原数据
        System.out.println("原数组为:");
        for (int j = 0;j<array.length;j++){//循环输出原数组
            System.out.print(array[j]+"\t");
        }
        int newArray[]=array;//定义newArray等于array
        System.out.println();
        System.out.println("逆序并处理后的数组为:");
        for (int i =(array.length-1);i>=0;i--){//逆序输出数组array中的数据
            newArray[i]=array[i];
            if ( newArray[i]<0 ){//当newArray[i]小于0时,将其定义为0
                newArray[i]=0;
            }
            System.out.print(newArray[i]+"\t");//输出newArray中的值
        }
    }
}

练习:32

原题:
某百货商场当日消费积分最高的八名顾客,他们的积分分别是:18,25,7,36,13,2,89,63.

参考源代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 * 概念有点迷糊
 * 参考了书上的一个示例
 * 假设第一个数字是最小数字,然后使用循环对其进行比较
 */
import java.util.Scanner;
public class P170_3{
    public static void main (String[]args){
        Scanner input = new Scanner (System.in);
        int jifen[] = new int [8];//定义数组
        int min = 0 ;//定义最小值
        int index = 0 ;
        for (int i = 0;i<jifen.length;i++){//循环
            System.out.println("请输入第"+(i+1)+"位顾客的积分:");
            jifen[i]=input.nextInt();//往数组中存入数据
            }
        min = jifen[0];//假设数组的第一个数字是最小数字
        for (int j=0;j<jifen.length;j++){//循环
            if ( jifen[j]<min ){//假设数组中的数字小于最小值
                min=jifen[j];//将当前数值赋给最小值
                index = j ;//获取数组下标
        }  
        }
        System.out.println("最小的积分是:"+min);
        System.out.println("最小积分在数组中的原始位置是:"+index);
    }
}

扩展:
输入十位学生的成绩,并进行顺序,逆序输出\n求出最高分及最低分,并算出平均分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
 *输入十位学生的成绩,并进行顺序,逆序输出\n求出最高分及最低分,并算出平均分
 */
import java.util.Scanner;
import java.util.Arrays;
public class Test32{
    public static void main (String[]args){
        Scanner input = new Scanner(System.in);
        int score[] = new int [10];//定义数组储存10位同学的成绩
        int num = 0;//定义成绩之和
        System.out.println("输入十位学生的成绩,并进行顺序,逆序输出\n求出最高分及最低分,并算出平均分");
        System.out.println("**************************");
        for (int i = 0 ; i<score.length;i++){//循环录入学生成绩
            System.out.println("请输入第"+(i+1)+"学生的成绩:");
            score[i] = input.nextInt();
            if ( score[i]>100 || score[i]<0 ){//检测用户输入的数字是否合法
                System.out.println();
                System.out.println("抱歉!考试成绩应该小于等于100或者大于等于0,请重新输入!");
                System.out.println();
                continue;
            }
        }
        Arrays.sort(score);//对数组进行排序
        System.out.print("顺序输出的值是:\t");
        for ( int j = 0;j<score.length;j++ ){//循环输出顺序排序之后的值
            System.out.print(score[j]+"\t");
        }
        System.out.println();
        System.out.print("逆序输出的值是:\t");
        for ( int a = (score.length-1);a>=0;a-- ){//循环输出逆序排序之后的值
            System.out.print(score[a]+"\t");
        }
        int max = score[0];//假设数组中的第一个数字为最高分
        int min = score [0];//假设数组中的第一个数字为最低分
        for (int b = 0;b<score.length;b++){//比较得出数组最高分与最低分
            if ( score[b]>max ){
                max=score[b];
            }
            if ( score[b]<min ){
                min=score[b];
            }  
        }
        System.out.println();
        System.out.println("最高分是:"+max);
        System.out.println("最低分是:"+min);
        for ( int c = 0;c<score.length;c++ ){//循环得出成绩之和
            num = num+score[c];
            }
        System.out.print ("分数平均分是:"+num/10);//输出平均分
        System.out.println();
        System.out.println("程序结束!");
        }
    }

练习:27

原题:张浩打算买一部手机,他询问了四家店的价格,分别是:2800,2900,2700和3100
* 编程求出最低价格.

参考源代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
 * 张浩打算买一部手机,他询问了四家店的价格,分别是:2800,2900,2700和3100
 * 编程求出最低价格.
 */
import java.util.Scanner;
public class P160_4{
    public static void main (String[]args){
        Scanner input = new Scanner (System.in);
        System.out.println("请输入4家店的价格:");//提示
        int price []=new int[4];//创建数组price,用户储存数据
        int min = 0 ;
        for ( int i = 0 ; i<price.length;i++ ){//循环开始
            System.out.println("第"+(i+1)+"家店的价格");
            price[i] = input.nextInt();//录入价格
            }
        min = price[0];
        for (int j = 0; j<price.length;j++){
            if ( price[j]<min )//当价格大于当前数时,则将min记录下来
                min=price[j];
        }
        System.out.println("最低的价格是:"+min);//最后输出.
    }
}