所以我有这个任务,我必须输入两个字符串,然后我必须找到有什么共同的字母,然后写出来但只有一次......例如 如果string1是“onomatopoeia”而string2是“对话”我应该回来: o,n,a,t,e,i ...我唯一的问题是最后一部分(“我不知道如何只写一次字母)
这是我的代码
import java.util.Scanner;
import java.util.Arrays;
public class Zadatak4 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
char niz[] = new char[100];
char niz2[] = new char[100];
System.out.print("Add the first string: ");
niz = scan.nextLine().toCharArray();
System.out.print("Add the second string: ");
niz2 = scan.nextLine().toCharArray();
for (int i = 0; i < niz.length; i++) {
for (int j = 0; j < niz2.length; j++) {
if (niz[i] == niz2[j]) {
System.out.println(niz[i] + " ");
// What now!?!?!?
}
}
}
}
}
答案 0 :(得分:2)
使用套装:
LinkedHashSet<string> printNum = new LinkedHashSet<string>();
if(niz[i] == niz2[j])
{
printNum.add( niz[i] );
}
// outside of loop
for( string s : printNum )
{
System.out.println(s);
}
答案 1 :(得分:1)
您可以使用两个HashSets
来完成此操作。
每个单词都有一个哈希集。当你在word1中遇到一个字母时,你输入set1。 当您在word2中遇到字母时,请输入set2。
最后,你只保留两组中的字母。
import java.util.HashSet;
public class Zadatak4 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
char niz[] = new char[100];
char niz2[] = new char[100];
System.out.print("Add the first string: ");
niz = scan.nextLine().toCharArray();
System.out.print("Add the second string: ");
niz2 = scan.nextLine().toCharArray();
HashSet<Integer> set1 = new <String>HashSet();
HashSet<Integer> set2 = new <String>HashSet();
for(int i = 0; i < niz.length; i++)
{
if(!set1.contains(niz[i]));
set1.add((int) niz[i]);
}
for(int i = 0; i < niz2.length; i++)
{
if(!set2.contains(niz2[i]));
set2.add((int) niz2[i]);
}
Iterator<Integer> it = set1.iterator();
int currentChar;
while(it.hasNext())
{
currentChar = it.next();
if(set2.contains(currentChar))
System.out.println((char)currentChar);
}
}
}
答案 2 :(得分:1)
你想要将它们添加到一个集合
mutuals.add(niz[i])
然后在开头的循环之外添加这个以声明它
Set<char> mutuals = new HashSet<char>()
确保在循环外执行此操作
之后,打印出所有相互之间的内容答案 3 :(得分:1)
几乎每个人都建议Set
,这是艰难的做法......
public static void main(String[] args) {
String printed = "";
Scanner scan = new Scanner(System.in);
char niz[] = new char[100];
char niz2[] = new char[100];
System.out.print("Add the first string: ");
niz = scan.nextLine().toCharArray();
System.out.print("Add the second string: ");
niz2 = scan.nextLine().toCharArray();
for(int i = 0; i < niz.length; i++)
{
for(int j = 0; j < niz2.length; j++)
{
if(niz[i] == niz2[j])
{
if(printed.indexOf(niz[i]) == -1) {
System.out.println(niz[i]+" ");
}
printed += niz[i];
}
}
}
答案 4 :(得分:1)
你需要的是两组的交集,所以你可以使用的是Set.retainAll()
。
答案 5 :(得分:1)
一个班轮:
HashSet<Character> common =
new HashSet<Character>(Arrays.asList(niz1)).retainAll(
new HashSet<Character>(Arrays.asList(niz2)));
答案 6 :(得分:0)
将char存储在Set in
中 Set<Character> cs=new HashSet<>();
if(niz[i] == niz2[j])
{
cs.add(niz[i]);
//System.out.println(niz[i]+" ");
//What now!?!?!?
}