//第一种
public static Map count(String str){
Map<String,Integer>maps=new HashMap<String,Integer>();
for(int i=0;i<str.length();i++){
//获取下标所对应的字符
String key=String.valueOf((str.charAt(i)));
//判断该字符在map中是否存在
if(!maps.containsKey(key))
//如果不存在,将key(该字符)与value(出现的次数)存到map中
maps.put(key,1);
else{
//如果存在,将该字符对应的value取出
int val=maps.get(key);
//给该字符所对应的value+1
maps.put(key,val+1);
}
}
return maps;
}
//第二种
public static Map count1(String str){
Map<String,Integer>map=new HashMap<>();
char arr[]=str.toCharArray();//转换成字符数组
Arrays.sort(arr);//排序数组
String temp=new String(arr);//重新产生字符串
//遍历统计
for(int startIndex=0;startIndex<str.length();){
char c=temp.charAt(startIndex);//获取第一个相同字符
String t=String.valueOf(c);//把第一个字符转换成字符串
//获取字符最后出现的位置
int lastIndex=temp.lastIndexOf(t);
map.put(t,(lastIndex+1-startIndex));
startIndex=lastIndex+1;//下次开始的位置
}
return map;
}
//第三种
public static Map count2(String str){
Map<Character,Integer>map=new HashMap<>();
for(int i=0;i<str.length();i++){
int x=0;//记每个不同字符出现的次数
char c1=str.charAt(i);
for(int m=0;m<=(str.length()-1);m++){
if(c1==str.charAt(m)){
x++;
}
}
map.put(c1,x);
}
return map;
}
//第四种
public static Map count3(String str){
Map<String,Integer>map=new HashMap<>();
HashSet<Character>hSet=new HashSet<Character>();
char[]cs=str.toCharArray();
for(char c:cs){
hSet.add(c);
}
ArrayList<Character>list=new ArrayList<Character>(hSet);
int n=hSet.size();//有多少种字符
int[]times=new int[n];//保存每种字符的出现次数
for(char c:cs){
times[list.indexOf(c)]++;
}
for(int i=0;i<n;i++){
map.put(""+list.get(i),times<i>);
}
return map;
}
//展示
public static void show(Map<String,Integer>map){
for(Map.Entry i:map.entrySet()){
System.out.println("“"+i.getKey()+"”"+"出现的次数为"+i.getValue()+"次");
}
}
out关键字会导致参数通过引用来传递。这与ref关键字类似,不同之处在于ref要求变量必须在传递之前进行初始化。若要使用out参数,方法定义和调用方法都必须显式使用out关键字。例如:
classOutExample
{
staticvoidMethod(outinti)
{
i=44;
}
staticvoidMain()
{
intvalue;
Method(outvalue);//valueisnow44
}
}
尽管作为out参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。
ref和out关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用ref参数,而另一个方法采用out参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:
classCS0663_Example
{
//compilererrorCS0663:"cannotdefineoverloaded
//methodsthatdifferonlyonrefandout"
publicvoidSampleMethod(outinti)
{
}
publicvoidSampleMethod(refinti)
{
}
}
但是,如果一个方法采用ref或out参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:
classRefOutOverloadExample
{
publicvoidSampleMethod(inti)
{
}publicvoidSampleMethod(outinti)
{
}
}
备注
属性不是变量,因此不能作为out参数传递。
参考资料:
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,k=0;
char a[40]="basd asasdfg as zx67 asd mklo";
char b[20];
gets(b);
int count=0;
int tags=0;
for(i=0;i<strlen(a);)
{
if(a[i]==b[0])
for(k=i,j=0;j<strlen(b);j++,k++)
{
if(a[k]==b[j])
tags=1;
else
tags=0;
if(tags==1&&j==strlen(b)-1)
count++;
}
i++;
}
printf("%d",count);
}
求解,用C语言编写一个程序,查找一个字符串在另一个字符串中出现的次数...
String key=String.valueOf((str.charAt(i)));\/\/判断该字符在map中是否存在 if(!maps.containsKey(key))\/\/如果不存在,将key(该字符)与value(出现的次数)存到map中 maps.put(key,1);else{ \/\/如果存在,将该字符对应的value取出 int val=maps.get(key);\/\/给该字符所对应的value+1 maps...
...出现的次数啊?是用c语言,不要用c++,谢谢大家了
} \/*---end of main--- 我是把要读写的东西放进了一个input.txt中 这样好读写一下 你看看行不行吧
统计一串字符中每个字符出现的次数:(C语言)
printf("%c: %d\\n",zf[i],tj[i]);s是格式化为字符串,以字符'\\0'终止的,可是你的程序根本没有在缩短字符串后清理原有字符,自然得不到正常终止符 c是格式化为字符,就是char数组的一个元素,这个才是你要的
c语言编写一个程序,实现查找一个字符串中的特定字符,并将其删除.
三、参考程序 include <stdio.h>#include <string.h>\/* 移除字符串source中的所有ch字符 *\/void remove(char *source, char ch);void main(){char source[1000];char ch;printf("请输入一个字符串:");gets(source);printf("请输入待删除字符:");ch = getchar();remove(source, ch);pri...
求一个用于表白的C语言或C++的程序,谢谢大家了
define I 20 define R 340 include <string.h> int main(){ char answer[10];printf("遇到你\\n我才发现\\n曾经所有的条件\\n似乎都成了我等你的借口\\n\\n");printf("我对你的感情已经决堤\\n所以\\n请允许我,从今往后映入你\\n明媚的眼\\n");printf("我\\n想和你\\n耳鬓厮磨,相濡以沫!
帮我写一个c语言的程序,按照我下面的思路写下哦
char c_je[51]; \/*大写金额字符变量*\/ char* zh( x ) \/*数字金额转换为大写金额子程序*\/ double x; \/*要转换的金额数*\/ { int i, n, bz;char je[14]; \/*数字金额的字符变量*\/ char temp[13];char f1[10][3] = {"零","壹","贰","叁","肆","伍","陆",...
C语言编程高手请来解决几道tc程序题
编写一个函数int fun(char *str,char *substr),该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。在主函数中输入两个比较的字符串,通过调用该函数得到相应的输出结果。7、用递归法将一个整数n转换成...
C语言找出一个数组中出现次数最多的那个元素
m=1;k=1; \/\/t记录当前出现次数最多的数,m记录t出现的次数,k记录当前数出现的次数,for(i=1;i<n;i++){ if(a[i]!=a[i-1])\/\/如果前后两数不相等了 { if(k>m)\/\/只出现一遍则不会有k>m,由于m不断更新,值会变大,所以不一定会有k>m反复 { m=k;\/\/如果k>m了,m变大,...
C语言设计一个程序分别字母和数字
include <ctype.h> int main() { char a;printf("Input a character: ");scanf("%c", &a);if (isalpha(a))printf("%c is a alpha character.\\n", a);else if (isdigit(a))printf("%c is a digit character.\\n", a);else printf("%c is other character.\\n", a);} ...
大家看一下这个C语言编写的程序,我想让他从最后一个数查向第一个跟他...
printf("%s",a[i]);这一句有问题,%s是用来显示字符串的,a[i]是字符串的元素,因此是char类型,所以不能用%s来显示。把上面这句改成:printf("%c",a[i]);应该就行了,如果你运行中还有其它问题可以再问我。