java编程:控制台输入一个字符串,要求按照字符出现的次数排序,排序时去掉重复字符!

java编程:控制台输入一个字符串,要求按照字符出现的次数排序,排序时去掉重复字符!,第1张

import javautilArrayList;
import javautilHashMap;
import javautilScanner;
public class Test{
public static void main(String[] args) {
Scanner s = new Scanner(Systemin);
Systemoutprintln("请输入一个字符:");
String cnt = snextLine();
ArrayList<Character> array = new ArrayList<Character>();
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
//--------这里是计算字符出现次数并记录↓----------
for (int i = 0; i < cntlength(); i++) {
char tmp = cntcharAt(i);
if(mapcontainsKey(tmp)){
int num = mapget(tmp);
num++;
mapput(tmp, num);
}else{
mapput(tmp, 1);
arrayadd(tmp);
}
}
//-----下面就是个冒泡--------
for (int i = 0; i < arraysize(); i++) {
for (int j = 0; j < arraysize()-1-i; j++) {
if(mapget(arrayget(j))>mapget(arrayget(j+1))){
char tmp = arrayget(j);
arrayset(j, arrayget(j+1));
arrayset(j+1, tmp);
}
}
}
Systemoutprintln(map);//这个就是打印字符出现的次数
Systemoutprintln(array);//这个打印排序后的数组,从小到大
}
}

package comajaxtest;
import javaioFile;
import javaioFileWriter;
import javautilArrays;
/
把一个数组的元素复制到另个数组; 去除重复元素不能用SET集合; 每次复制的记录输到一个文件里

@author ajax_2003
@version 10, 2009-7-26

/
public class CopyArrayAndRemoveDuplicate {
private static String FILE_PATH = "d:/abctxt";
private static File file;
static {
file = new File(FILE_PATH);
}
/
取出冗余数据

@param nums
原数组
/
private int[] removeDuplicate(int[] nums) throws Exception {
int[] tmpArray = new int[numslength];
int count = 0;
loop: //
for (int i = 0; i < numslength; i++) {
int tmp = nums[i];
for (int j = 0; j < count; j++) {
if (tmp == tmpArray[j])
continue loop;
}
tmpArray[count++] = tmp;
log("成功复制了元素" + tmp);// 写日志
}
return copyArray(tmpArray, 0, count);
}
/
拷贝数组

@param srcArray
要拷贝的数组
@param startIndex
拷贝起始索引
@param endIndex
拷贝结束索引
@return 结果数组
/
private int[] copyArray(int[] srcArray, int startIndex, int endIndex)
throws Exception {
if (endIndex <= startIndex)
throw new Exception("Argumens wrong!");
int[] desArray = new int[endIndex - startIndex];
Systemarraycopy(srcArray, startIndex, desArray, 0, desArraylength);
return desArray;
}
/
输出 *** 作日志(即: 每次复制的记录输到一个文件里)

@param oprate
/
private void log(String oprate) {
FileWriter out = null;
try {
out = new FileWriter(file, true);
outwrite(oprate + "\r\n");
} catch (Exception e) {
eprintStackTrace();
} finally {
try {
if (out != null)
outclose();
out = null;
} catch (Exception ex) {
exprintStackTrace();
}
}
}
public static void main(String[] args) {
int[] nums = { 1, 223, 1, 2, 2, 2, 3, 2, 3, 34, 45, 5, 5, 3, 23, 2, 2,
3, 4, 5, 5, 6, 7, 78, 8, 9, 34, 90, 45, 675, 4, };
int[] finalArray;
try {
finalArray = new CopyArrayAndRemoveDuplicate()
removeDuplicate(nums);
Systemoutprintln(ArraystoString(finalArray));
} catch (Exception e) {
eprintStackTrace();
}
}
}

JAVA中通过import只能导入一个类
如有两个以上同名类
可以通用使用类的全限定名来使用这个类
javautilRandom r = new javautilRandom();

过了很久才看到你的提问,不好意思,希望对你有帮助:
import javautilScanner;
public class IoTest {
public static void main(String[] args) {
Scanner input = new Scanner(Systemin);
String str1 = inputnextLine();//输入一个字符串
String str2 = inputnextLine();//指定字符
String str = str1replace(str2, "");//删除指定字符后的字符串
Systemoutprintln(str1+"--"+str2+"--"+str);
}
}
/
输入:
adfkfjs
j
输出:adfkfjs--j--adfkfs
/

用hashset吧,set集合可以保证元素不重复

import javautilArrays;
import javautilHashSet;
public class Sum {
    public static void main(String[] args) {
        String inputNumbers = "1 2 3 2 1 6 3 4 5 5";
        String [] numbersString = inputNumberssplit("\\s+");
        int [] numbersInt = new int[numbersStringlength];
        for (int i = 0; i < numbersIntlength; i++) {
            numbersInt[i] = IntegerparseInt(numbersString[i]);
        }
        Systemoutprintln(ArraystoString(numbersInt));
        
        HashSet<Integer> all = new HashSet<Integer>();
        for (int i = 0; i < numbersIntlength; i++) {
            alladd(numbersInt[i]);
        }
        Systemoutprintln(all);
    }
}

package test;
public class StringHeBing {
 public static String merge(String str1,String str2){
  int len = str2length();
  for (int i = 0; i < len; i++) {
   char c = str2charAt(i);
   if (str1indexOf(c) == -1) {
    str1 = str1concat(c+"");
   }
  }
  Systemerrprintln(str1);
  return str1;
 }
 public static void main(String[] args) {
  String str1 = "上海金融大厦";
  String str2 = "上港集团";
  merge(str1, str2);
 }
}

上面的做法只把加加进来的字符串去重,而未把原来的字符串去重复,下面做了个新的

public static String merge1(String str1,String str2){
        String add = str1concat(str2);
        String result= addcharAt(0)+"";
        for (int i = 1; i < addlength(); i++){
            char c = addcharAt(i);
               if (resultindexOf(c) == -1) {
                   result = resultconcat(c+"");
               }
        }
        return result;
    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10550661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存