Java 实验三

3-1

3个整数数组进行整体排序,根据输入的三个数组的元素,输出排序后的结果(从大到小)

输入格式:

第1个数组的长度

第1个数组的各个元素

第2个数组的长度

第2个数组的各个元素

第3个数组的长度

第3个数组的各个元素

输出格式:

所有数组的整体排序

输入样例:

在这里给出一组输入。例如:

3 
79 80 61
3
88 66 77
2
23 90

输出样例:

在这里给出相应的输出。例如:

90 88 80 79 77 66 61 23

答案:


import java.util.Scanner;
import java.util.Arrays;
public class Main {
	public static void main(String []args)
	{
		Scanner s=new Scanner(System.in);
		int a=s.nextInt();
		int i;
		int []arr1=new int [a];
		for(i=0;i<a;i++)
		{
			arr1[i]=s.nextInt();
		}
		int b=s.nextInt();
		int []arr2=new int [b];
		for(i=0;i<b;i++)
		{
			arr2[i]=s.nextInt();
		}
		int c=s.nextInt();
		int []arr3=new int [c];
		for(i=0;i<c;i++)
		{
			arr3[i]=s.nextInt();
		}
        int [] ee = new int[a + b + c];
        System.arraycopy(arr1, 0, ee, 0, a);
        System.arraycopy(arr2, 0, ee, a, b);
        System.arraycopy(arr3, 0, ee, a + b, c);
        Arrays.sort(ee);
        System.out.print(ee[ee.length-1]);
        for(i=ee.length-2;i>=0;i--)
        {
        	System.out.print(" " + ee[i]);
        }
		s.close();
	}
}

3-2两队PK

A、B两队进行比赛,每队各有多名队员及其分数(分数不重复),使用A、B队所有队员得分的TOP 3来判断两队输赢,在TOP 3中拥有更多人数的队获胜。写程序实现该过程。

输入格式:

A队人数

A队每人得分

B队人数

B队每人得分

输出格式:

前三甲分数

赢的队

输入样例:

5
22 33 44 55 11
4
12 32 42 52

输出样例:

55 52 44
A

答案:

import java.lang.*;
import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = 0;
        int aNum = scan.nextInt();
        Integer[] arraysA = new Integer[aNum];
        for(int i = 0; i < aNum; ++i) {
            arraysA[i] = scan.nextInt();
        }
        int bNum = scan.nextInt();
        Integer[] arraysB = new Integer[bNum];
        for(int i = 0; i < bNum; ++i) {
            arraysB[i] = scan.nextInt();
        }
        Comparator<Integer> cmp = new MyComparator();
        Arrays.sort(arraysA, cmp);
        Arrays.sort(arraysB, cmp);
        Integer[] res = new Integer[3];
        int aCmp = 0, bCmp = 0;
        for (int i = 0; i < 3; i++) {
            if (arraysA[aCmp] > arraysB[bCmp]) {
                res[i] = arraysA[aCmp++];
            } else if (arraysA[aCmp] < arraysB[bCmp]) {
                res[i] = arraysB[bCmp++];
            } else {
                i++;
            }
        }

        for (int i = 0; i < res.length; ++i) {
            System.out.print(res[i]);
            if (i != res.length - 1)
                System.out.print(" ");
        }
        System.out.println();
        if (aCmp > bCmp) {
            System.out.print("A");
        } else {
            System.out.print("B");
        }
        scan.close();
    }
}

class MyComparator implements Comparator<Integer>{
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1);
    }
}

3-3数组元素的删除

完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置。
重复若干次这样的删除,得到最后的结果。

输入格式:

第一行包括一个整数n(1<=n<=100),表示数组元素的个数。
第二行输入n个数组元素,均为整数,用空格隔开。
第三行输入一个数k(1<=k<=100),表示要进行k次删除。
接下来k行,每行一个数x,表示要删除第x个元素。

输出格式:

输出经过k次删除后的数组,每两个元素之间用空格隔开。

输入样例:

10
1 2 3 4 5 6 7 8 9 10
4
3
2
4
6

输出样例:

1 4 5 7 8 10

答案:

import java.util.Scanner;//该包用来调用输入方法
import java.lang.Math;
public class Main {
    public static void main(String[] args) {
       Scanner in = new Scanner(System.in);

       int n = in.nextInt();
       int[] a = new int[n];

       for(int i=0 ; i<n ; i++){
          a[i] = in.nextInt();
       }
       int m = in.nextInt();
       int[] b = new int[m];
       for(int i=0 ; i<m ; i++){
          b[i] = in.nextInt();
       }
        
       int t=0;
    
       for(int j=0 ; j<m ; j++){
          for(int i=0 ; i<n-t ; i++){//循环被删数组
            if(i+1==b[j]){//寻找应该删除的元素
              for(int k=i ; k<n-1 ; k++){
                 a[k]=a[k+1];//将删除的元素的后面剩余的元素往前移
              }
               t++;//缩短被删数组长度
            }
          }
       }
       for(int i=0 ; i<n-m ; i++){
          if(i==n-m-1){
             System.out.println(a[i]);
          }
          else{
             System.out.printf("%d " , a[i]);
          }
       }
}
}

3-4sdut-array1-1 RDMP音乐播放器(II)(一维数组)

注意: 这是在使用数组的情况下完成的。

RDMP音乐播放器将存储5首歌曲,它们的名称将永远是“A”,“B”,“C”,“D”和“E”。RDMP有3个按钮,用户可以按下这些按钮来重新排列播放列表并播放歌曲。
最初,RDMP播放列表是“A, B, C, D, E”。3个控制按钮做以下工作:
   按钮1:将播放列表的第一首歌曲移动到播放列表的末尾。例如:“A, B, C, D, E”会变成“B, C, D, E, A”。
   按钮2:将播放列表的最后一首歌移动到播放列表的开始。例如,“A, B, C, D, E”会变成“E, A, B, C, D”。
   按钮3:交换播放列表的前两首歌。例如,“A, B, C, D, E”会变成“B, A, C, D, E”。

你需要编写一个程序来模拟一个可以按下n次按钮的RD音乐播放器。(n>0)

输入格式:

输入有多行。
首行是数值n,表示后续要按下按钮的次数。
后续有n行。均为1到3之间的数字,代表要采取的行动。

输出格式:

输出最终播放列表的正确顺序。
歌曲名称中间用逗号作分隔。最后一首歌名称之后没有逗号。

输入样例1:

1
1

输出样例1:

B,C,D,E,A

输入样例2:

1
2

输出样例2:

E,A,B,C,D

输入样例3:

1
3

输出样例3:

B,A,C,D,E

输入样例4:

6
1
2
3
3
2
1

输出样例4:

A,B,C,D,E

答案:

import java.io.*;
public class Main{
        static BufferedReader ins =new BufferedReader(new InputStreamReader(System.in));
        static StreamTokenizer in = new StreamTokenizer(ins);
        static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
        public static void main(String[] args)throws IOException{
                int a=0;
                char[] name=new char[] {'A','B','C','D','E'};
                 in.nextToken();
                a= (int) in.nval;
                for(int i=0;i<a;i++){
                        in.nextToken();
                        int num=(int)in.nval;
                        if(num==1){
                                char record=name[0];
                                for(int j=0;j<4;j++){
                                        name[j]=name[j+1];
                                }
                                name[4]=record;
                        }
                        if(num==2){
                                char record=name[4];
                                for(int j=3;j>=0;j--){
                                        name[j+1]=name[j];
                                }
                                name[0]=record;
                        }
                        if(num==3){
                                char temp=name[0];
                                name[0]=name[1];
                                name[1]=temp;
                        }
                }
 
                for (int j=0;j<5;j++){
                        out.print(name[j]);
                        if(j!=4)
                            out.print(",");
                }
                out.close();
        }
}

3-5 重复数据问题

在一大堆数据中找出重复的是一件经常要做的事情。现在要处理许多整数,在这些整数中,可能存在重复的数据。
你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“yes”这三个字母;如果没有,则输出“no”。

输入格式:

程序会读到n个整数的字符串【1<=n<=10000】,以空格分开,这些整数的范围是[1,10000]。

输出格式:

如果这些整数中存在重复的,就输出:
yes

否则,就输出:
no

输入样例:

在这里给出一组输入。例如:

1 2 3 1 4

输出样例:

在这里给出相应的输出。例如:

yes

答案:

import java.util.*;
class Main{
    public static void main(String[] args){
        int[] array=new int[10000];
        int x,flag=0;
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt()){
            x=sc.nextInt();
            if(array[x]==1){
                flag=1;
                break;
            }
            else
                array[x]++;
        }
        if(flag==1){
            System.out.println("yes");
        }
        else 
            System.out.println("no");
    } 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Java实验三继承和多态,我可以为您提供一些基本的知识点和例子。 在Java中,继承是一种重要的面向对象编程概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。子类可以使用父类中的属性和方法,也可以添加自己的属性和方法。多态是指同一种类型的对象,在不同的情况下会表现出不同的行为。在Java中,多态可以通过方法重载和方法重写来实现。 下面是一个简单的例子,演示了如何使用继承和多态: ``` // 定义一个动物类 class Animal { public void makeSound() { System.out.println("动物发出声音"); } } // 定义一个狗类,继承自动物类 class Dog extends Animal { @Override public void makeSound() { System.out.println("狗发出汪汪声"); } } // 定义一个猫类,继承自动物类 class Cat extends Animal { @Override public void makeSound() { System.out.println("猫发出喵喵声"); } } // 测试多态 public class Test { public static void main(String[] args) { Animal animal1 = new Dog(); Animal animal2 = new Cat(); animal1.makeSound(); // 输出:狗发出汪汪声 animal2.makeSound(); // 输出:猫发出喵喵声 } } ``` 在上面的例子中,我们定义了一个Animal类,它有一个makeSound()方法。然后我们定义了一个Dog类和一个Cat类,它们都继承自Animal类,并重写了makeSound()方法。最后,在测试类中,我们创建了一个Animal类型的变量animal1和animal2,分别指向Dog对象和Cat对象。由于多态的特性,animal1和animal2都可以调用makeSound()方法,但是它们实际上调用的是Dog类和Cat类中重写的makeSound()方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值