Java 从字符串中删除重复字符
我有一个加密或解密文件的程序。关键字是用户输入的字符串,但必须删除任何重复的字母 例如,Java 从字符串中删除重复字符,java,Java,我有一个加密或解密文件的程序。关键字是用户输入的字符串,但必须删除任何重复的字母 例如,FEATHER将变成FEATHR 我目前有以下应用程序作为起点,但我不知道如何删除重复的字母。我需要更改或添加什么 import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.Scanner; public class Average { public
FEATHER
将变成FEATHR
我目前有以下应用程序作为起点,但我不知道如何删除重复的字母。我需要更改或添加什么
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Average
{
public static void main(String[] args) throws FileNotFoundException
{
System.out.print("Would you like to encrypt or decrypt. e/d");
Scanner ed = new Scanner (System.ed);
String eOrD = ed.next();
if (eOrD.equals("e"))
{
Scanner console = new Scanner(System.in);
System.out.print("Output File: ");
String outputFileName = console.next();
PrintWriter out = new PrintWriter(outputFileName);
System.out.print("Please enter an encryption key");
String keyWord = in.next();
您可以使用collection来存储char序列中的char,Set只允许唯一的条目,因此您将是金色的。例如:
@Test
public void setTest(){
Set<Integer> integerSet = new LinkedHashSet<>();
integerSet.add(1); // return true, operation successfull
integerSet.add(2); // return true
integerSet.add(1); // return false
asserEquals(2, integerSet.size()); // test is green, passed
}
@测试
公共无效设置(){
Set integerSet=new LinkedHashSet();
integerSet.add(1);//返回true,操作成功
integerSet.add(2);//返回true
integerSet.add(1);//返回false
asserEquals(2,integerSet.size());//测试为绿色,通过
}
正如在评论和建议中提到的,我们需要保持顺序,而不是所有的Set实现都这样做。谢谢你们 那么,你找到第一个字母E有多远?另外,顺便说一下,您只需要一个扫描对象,而
System.ed
不存在上面的重复链接在这里看起来是一个很好的解决方案。此外,您可以在UI级别实现这一点,即防止用户输入已经输入的字母。这可能比允许他们输入任何他们想要的内容更直观。谢谢,我将使用您所说的,这样您将获得金牌。除非使用保留插入顺序的集合,例如LinkedHashSet
,否则在删除重复项之前,您将删除字母的原始顺序。请参阅复制链接以获得更好的解释。