我有一个涉及字符串数组和两个for循环的Java类。这个类遍历数组元素并打印它们以及它们在数组中的重复次数。我想要有人帮助我只打印每个元素(字符串)一次,即使它在数组中重复出现。下面的代码会多次打印数组中的某些元素,因此需要比较数组元素。
public class myClassName {
static String [] myArray = {"Khaled","Valderama","Daoud","Khaled","Rasheed","Daoud","Valderama","Khaled"};
public static String [] getArray()
{
String str[] = new String[myArray.length];
for(int i=0;i<myArray.length;i++)
{
str[i] = myArray[i].toString();
}
return str;
}
public static void main( String [] args)
{
String d [] = getArray();
int noOftimesRepeated;
for(int i=0;i<getArray().length;i++)
{
noOftimesRepeated=1;
String currentName = d[i];
for(int j=0;j<getArray().length;j++)
{
if(i!=j && d[i].equalsIgnoreCase(d[j]))
{
noOftimesRepeated = noOftimesRepeated+1;
}
}
int j =0;
System.out.println(d[i]+"\t" +"\t"+noOftimesRepeated);
}
}
请问是否有不使用.util.*包的解决方案?
我有第二种尝试,但它只输出了一个元素并且存在冗余。
仅此而已。
public class Javafool {
static String [] myArray = {"Khaled","Valderama","Daoud","Khaled","Rasheed","Daoud","Valderama","Khalo","Valderama"};
static String str2[] = new String[myArray.length];
public static String [] getArray()
{
String str[] = new String[myArray.length];
for(int i=0;i<myArray.length;i++)
{
str[i] = myArray[i].toString();
}
return str;
}
public static void main(String[] args) {
String d [] = getArray();
int noOftimesRepeated;
sort(myArray);
int no_of_repeat=1;
String temp =null;
int i ;
for( i = 0;i<myArray.length-1;i++)
{
temp = myArray[i];
myArray[i] = myArray[i+1];
myArray[i+1] = temp;
if(myArray[i].equals(temp))
{
no_of_repeat= ++no_of_repeat;
}
}
System.out.println(myArray[i]+""+temp+"\t"+"\t\t"+no_of_repeat);
}
public static void sort(String [] array) {
String temp = null;
for(int j=0;j<array.length;j++)
{
for(int i = 0; i<array.length-1;i++)
{
if(array[i].compareTo(array[i+1])<0)
{
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
}}}}
java.util.*
包的要求?我看到一些解决方案没有使用它(手动排序?),但它几乎等同于java.util
中公开的方法,而且很可能会出现错误。 - Arnaud Denoyelle