PAT B1064 JAVA

代码如下:

import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String n=sc.nextLine();

        String inputString = sc.nextLine();
        String stringArray[] = inputString.split(" ");   //将输入数据读入到一个字符数组里去

        int num[] = new int[stringArray.length];           //将输入的字符数组变成整型的数组 
        for (int i = 0; i < stringArray.length; i++) {
            num[i] = Integer.parseInt(stringArray[i]);
        }

        int n1=stringArray.length;
        int result[]=new int[n1];

        for(int k=0;k<n1;k++)
        {
            String stringArray1[] = stringArray[k].split("");    //字符数组的一个字符串123 转换成[1 2 3]
            int num1[] = new int[stringArray1.length];
            for (int i = 0; i < stringArray1.length; i++) {
                num1[i] = Integer.parseInt(stringArray1[i]);
                result[k]=result[k]+num1[i];
            }

        }

        //计算是否相等

        Arrays.sort(result);          
        ArrayList arrayList=new ArrayList();
        for(int i=0;i<n1;i++){
            if(arrayList.contains(result[i])){
                ;
            }
            else{
                arrayList.add(result[i]);
            }
        }
        //输出list的大小
        System.out.println(arrayList.size());
        //遍历输出使用List之后的数组
        for(int i=0;i<arrayList.size()-1;i++)
        {
            System.out.print(arrayList.get(i).toString()+" ");
        }
        System.out.print(arrayList.get(arrayList.size()-1).toString());

    }
}

提交结果如下:

解题思路:

我是比较笨的一种方法,主要是对于list等运用不是很熟悉,所以我读入数据和对数据进行分割采用的是数组的方式,我首先将123 899 51 998 27 33 36 12 键盘读入的时候存成String类型的数组,然后再对数组的每一个值采用split("")分割,目的是使得899 变成8 9 9 ,然后计算朋友数8+9+9=26,将26保存下来。再去分割51为5 1,然后再计算5+1=6,保存下来,依次类推。

所以我先对每一个几位数求出朋友数存在result数组里,然后对result采用sort排序,sort默认是升序排序,排序结果为:

3 6 6 6 9 9 26 26。这里要说对这样一个数组我想要剔除重复值然后输出,我用int型数组调半天无果,最后用list一下子解决了。

list的contain(o)函数,可以直接判断o是否在list中,这就很方便了。那就对result从前往后作为list.contain()的参数,如果list里面没有该元素,则添加,如果有该元素,则不添加,往后顺移,再判断。

最后要注意的是输出格式,输出要求最后一个数最后没有空格,所以list的最后一个元素要单独输出。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值