20155321 2016-2017-2《Java程序设计》课堂实践项目

20155321 2016-2017-2《Java程序设计》课堂实践项目

关于String类

  • split方法

  • charAt方法

项目题目:

模拟实现Linux下Sort -t : -k 2的功能。参考 Sort的实现。提交码云链接和代码运行截图。

  1 import java.util.*;
  2
  3 public class MySort1 {
  4     public static void main(String [] args) {
  5         String [] toSort = {"aaa:10:1:1",
  6                             "ccc:30:3:4",
  7                             "bbb:50:4:5",
  8                             "ddd:20:5:3",
  9                             "eee:40:2:20"};
 10
 11         System.out.println("Before sort:");
 12         for (String str: toSort)
 13                     System.out.println(str);
 14
 15         Arrays.sort(toSort);
 16
 17         System.out.println("After sort:");
 18         for( String str : toSort)
 19             System.out.println(str);
 20     }
 21 }

实验代码

import java.util.*;
public class Mysort1 {
    public static void main(String [] args) {
        String [] toSort = {"aaa:10:1:1",
                "ccc:30:3:4",
                "bbb:50:4:5",
                "ddd:20:5:3",
                "eee:40:2:20"};
        System.out.println("Before sort:");
        for (String str: toSort)
            System.out.println(str);
        String  [] s1 = new String[toSort.length];
        for (int i = 0; i < toSort.length; i++) {
            String list[] = toSort[i].split(":");
            s1[i] = list[2];
        }
        Arrays.sort(s1);
        String [] s2 = new String[toSort.length];
        for (int i=0; i<s1.length;i++)
            for (int j=0;j<toSort.length;j++)
                if( toSort[j].charAt(7) == (s1[i].toCharArray()[0]))
                    s2[i] = toSort[j];
        System.out.println("After sort:");
        for(String  str : s2 )
            System.out.println(str);
    }
}

实验结果

代码中所遇到的问题

  • 问题:第二层循环中使用一个数组,如果if语句成立就将toSort数组中对应的那个值赋值给新的那个数组,但是在实际应用中不知道如何填写if语句里的内容,对equals与==的使用还是不熟悉

  • 解决方案

    通过网上的资料显示:

  1. string是一个特殊的引用类型。对于两个字符串的比较,不管是 == 和 Equals 这两者比较的都是字符串是否相同;

  2. 当你创建两个string对象时,内存中的地址是不相同的,你可以赋相同的值。所以字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的;
      

  3. 基本数据类型比较(string 除外) == 和 Equals 两者都是比较值;

最终不断通过调试即可得出答案

原文地址:https://www.cnblogs.com/rafell/p/6834692.html