我编写了程序,找到了数组中最长的字符串。现在我需要额外的功能。如果n-string的最大字母数等于m-string
,则只包括在输出中复制字符串例如输入是:
输出应为:
因为它们(11个字母)都是最长的字符串(不仅是第一个字符串,而且两者都是!)。提前谢谢!
以下代码:
public static void main(String[] args) throws Exception
{
ArrayList<String> list = new ArrayList<String>();
ArrayList <Integer> numList = new ArrayList<Integer>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for(int i=0; i<5; i++) {
String s = reader.readLine();
list.add(i, s);
numList.add(i, s.length());
}
int maxN = numList.get(0);
String maxS = list.get(0);
for(int i=0; i<list.size(); i++) {
if(numList.get(i)>maxN) {
maxN=numList.get(i);
maxS = list.get(i);
}
}
System.out.println(maxS);
}
答案 0 :(得分:1)
您可以添加另一个包含结果的列表并迭代条目。
ArrayList<String> result = new ArrayList<>();
for(int i=0;i<list.size();i++){
if(list.get(i).length()==maxS){
result.add(list.get(i));
System.out.println(list.get(i));
}
}
答案 1 :(得分:0)
如果你要比较数组元素的字符串长度,那么在迭代初始的 list ArrayList时,要严格处理遇到的那些长度。不是你不能但是没有必要创建另一个整数ArrayList来保存原始列表 ArrayList中包含的所有内容的元素字符串长度,因为你可以通过初始迭代来建立它。这完全取决于您在执行迭代时设置的条件。
正如@Efka已经指出的那样,你可以拥有另一个String ArrayList来保存最长(和相同)长度的实际元素字符串,然后显示这些结果。
自然地假设您已成功填充列表 ArrayList并使用字符串元素:
ArrayList <String> dupList = new ArrayList<>(); // Will hold the results
// Need to start somewhere so...
// Initialize maxN with the string length of the first
// element contained within the 'list' ArrayList.
int maxN = list.get(0).length();
// Add the first element to the duplicate list.
dupList.add(list.get(0));
// We start our iteration from 1 instead of 0
// because we've already processed index 0
// above to establish a starting point.
for(int i = 1; i < list.size(); i++) {
int length = list.get(i).length(); //get the element length
if(length >= maxN) {
if (length > maxN) {
// Clear the duplicate list since there is
// now an elemental string that is longer.
dupList.clear();
// Set maxN to the new longest length
maxN = list.get(i).length();
}
// Add the new longest or equal to the longest
// element encountered to the duplicate list.
dupList.add(list.get(i));
}
}
要显示确定的结果,您可以使用以下几种方式:
// Display the determined results...
for (int i = 0; i < dupList.size(); i++) {
System.out.println(dupList.get(i));
}