黑马程序员技术交流社区

标题: 这道题倒数第二句什么意思 [打印本页]

作者: 专家    时间: 2015-11-30 18:40
标题: 这道题倒数第二句什么意思
package 面试题;

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Test5 {
    /*
     * 7、取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...
     */

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一行字符串:");
        String line=sc.nextLine();
        char[] chs=line.toCharArray();
        TreeMap<Character, Integer> tm=new TreeMap<>();
        for (char c : chs) {
            tm.put(c, tm.get(c)==null?1:tm.get(c)+1);
        }
        StringBuilder sb=new StringBuilder();
        for(Map.Entry<Character, Integer> entry:tm.entrySet()){
            sb.append(entry.getKey()).append("(").append(entry.getValue()).append(")");
        }
        System.out.println(sb.toString());  
    }

}

作者: 向上自由心    时间: 2015-11-30 18:40
append是Stringbuilder类的添加方法,api中可以查到,好好看一下课程12天,13天
作者: 未来大神    时间: 2015-11-30 19:28
用得着这么麻烦吗,直接遍历字符串不行吗
作者: jiangshicun007    时间: 2015-11-30 20:59
public class test4 {          // 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,         // 输出格式为:a(2)b(1)k(2)...         public static void main(String[] args) {                 String str = "abcdekka27qoq";                 String regex = "\\d";                 String[] arr = str.split(regex);                 String st1 = "";                 for (int i = 0; i < arr.length; i++) {                         // System.out.print(arr[i]);                         st1 = st1 + arr[i];                 }                 String st2 = "";                 HashMap<Character, Integer> mp = new HashMap<>();                 char[] arr1 = st1.toCharArray();                 for (char c : arr1) {                         if (!mp.containsKey(c)) {                                 mp.put(c, 1);                         } else {                                 mp.put(c, mp.get(c) + 1);                         }                 }                 for (char key : mp.keySet()) {                         st2 = st2 + key + "(" + mp.get(key) + ")";                 }                 System.out.println(st2);         }  }
作者: jiangshicun007    时间: 2015-11-30 21:49
public class test4 {          // 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,         // 输出格式为:a(2)b(1)k(2)...         public static void main(String[] args) {                 String str = "abcdekka27qoq";                 String regex = "\\d";                 String[] arr = str.split(regex);                 String st1 = "";                 for (int i = 0; i < arr.length; i++) {                         // System.out.print(arr[i]);                         st1 = st1 + arr[i];                 }                 String st2 = "";                 HashMap<Character, Integer> mp = new HashMap<>();                 char[] arr1 = st1.toCharArray();                 for (char c : arr1) {                         if (!mp.containsKey(c)) {                                 mp.put(c, 1);                         } else {                                 mp.put(c, mp.get(c) + 1);                         }                 }                 for (char key : mp.keySet()) {                         st2 = st2 + key + "(" + mp.get(key) + ")";                 }                 System.out.println(st2);         }  }
作者: jiangshicun007    时间: 2015-11-30 21:50
我日给你发的代码没法看了!apppend追加的意思,是Stringbuffer,和Stringbuder里面的添加方法
作者: xinxiangchen    时间: 2015-11-30 22:07
sb.append(entry.getKey())-->将entry中的Key添加进sb,返回sb
.append("(")-->将"("添加进sb,返回sb
.append(entry.getValue())-->将entry中的value添加进sb,返回sb
.append(")");-->将")"添加进sb,返回sb
共四次添加进了sb-->Key(Value)
作者: 袁有福123    时间: 2015-11-30 23:33
字符串的拼接吧  可以去查看api文档
作者: 活在当下学IOS    时间: 2015-11-30 23:34
等我学会了 我就告诉你
作者: 奔跑的小红帽    时间: 2015-11-30 23:45
将双列集合中的键和值取出来,用StringBuilder的append方法拼接为a(2)b(1)k(2)这种格式,也可以在 System.out.println打印时加“(”和“)”,不用使用StringBuilde
作者: Jhon    时间: 2015-12-1 00:17
好厉害的样子 看不懂
作者: 萧未然    时间: 2015-12-1 00:18
sb.append(entry.getKey()).append("(").append(entry.getValue()).append(")");
把它拆开:
sb.append(entry.getKey())
sb.append("(");
sb.append(entry.getValue());
sb.append(")");
它只是使用了简写而已,没什么好看的,还是分开好,有条理些吧
作者: 孜孜不倦    时间: 2015-12-2 14:19
append函数的意思及用法

功能说明:以可写方式打开文件。如果文件不存在,将会自动创建。使用该函数,将会覆盖文件中的所有内容。

  参考实例:

  var

    F: TextFile; // 声明文本文件类型变量

  begin

    AssignFile(F, 'C:\MyFile.txt'); // 将C:\MyFile.txt文件与F变量建立连接,后面可以使用F变量对文件进行操作。

    Rewrite(F); // 打开文件。如果文件不存在,将会在C盘中创建MyFile.txt文件。如果文件存在,将会覆盖MyFile.txt中的所有内容。

  end;

+++++++++++++++++
Append

功能说明:追加内容到文件中。文件必须要存在。

  参考实例:

  var

    S: String;

    F: TextFile;

  begin

    S := 'This is a book.';

  AssignFile(F, 'C:\MyFile.txt'); // 将C:\MyFile.txt文件与F变量建立连接,后面可以使用F变量对文件进行操作。

    Append(F); // 以追加的方式打开文件

    Writeln(F, S); // 将S变量中的内容追加到文本尾后。

    CloseFile(F); // 关闭文件

  end;
++++++++++++++++++++++++
//判断文件是否存在 FileExists
var
f: string;
begin
f := 'c:\temp\test.txt';
if not FileExists(f) then
begin
    //如果文件不存在
end;
end;

作者: 许鹏飞    时间: 2015-12-3 09:58
楼主倒数第二句改成这样应该能看懂了吧,对了,把最后一句删掉!倒数第二句改成如下:
System.out.print(entry.getKey())+"("+entry.getValue()+")");
把这个代码替换掉原有的代码,看看答案是否一样?
其实那个append是字符串缓冲区,append是添加的意思,相当于+号,有用选择我为答案哦

作者: 13666619050    时间: 2015-12-3 19:47
字符串的拼接
作者: liuyong    时间: 2015-12-3 21:08
它的意思就是输出a(2)b(1)k(2)...这样的格式,append是string中的追加功能,具体如下,因为括号过多,理解麻烦,可以剥离理解:
sb.append(entry.getKey()).append("(").append(entry.getValue()).append(")");相当于sb.append(entry.getKey())获取键的值,比如获取的是a,.append("(")就是在值后加个左括号(,接下来.append(entry.getValue())就是在(后添加键所对应的个数,比如a对应的个数,.append(")")就是接着添加一个右括号)
作者: liuzhipeng    时间: 2015-12-4 00:31
孜孜不倦 发表于 2015-12-2 14:19
append函数的意思及用法

功能说明:以可写方式打开文件。如果文件不存在,将会自动创建。使用该函数,将会 ...

姐们的黑马币可以是负分了
作者: 孜孜不倦    时间: 2015-12-4 15:37
啥意思?
作者: 二十七杯酒    时间: 2015-12-4 20:41
这道题,用到一个知识点map集合的put方法:添加键,返回值,map集合元素(key,value),用value统计个数最后得到是键值对形式的答案,遍历得到key和value,到第二句是为了拼接:得到这种格式a(2)b(1)k(2)
作者: 744919632    时间: 2015-12-8 11:38
取出键和值。
作者: pumpkin    时间: 2015-12-8 11:50
tm已经记录了每一个字母出现的次数。最后一个循环就是遍历tm,并且生成结果字符串,那段话可以拆成这样:
Character key = entry.getKey();
Integer value = entry.getValue();
sb.append(key+"("+value+")");

作者: cai602098596    时间: 2015-12-8 22:01
apppend()方法就是再一个字符串的末尾后面追加()里面的东西




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2