我是Java的初学者,我正在创建此程序以输出字符串中最大的单词。这是我的程序;
public static void main(String[] args) {
int largest=0;
String Banana= new String("It is my phone");
System.out.println("Results are;");
for (String retval: Banana.split(" "))
{
for(int i=0; i<retval.length(); i++)
{
if(i>largest);
{
largest=i;
System.out.println(retval);
}
}
}
}
当我调试程序时,它会给我输出
It It is is my my Phone Phone Phone Phone Phone
有人可以告诉我我需要解决什么吗?我不希望它打印“ it”,“ is”和“ Phone”应该只打印一次。
答案 0 :(得分:2)
您不需要嵌套循环。
只需使用first循环(遍历所有单词)并存储到目前为止在每次迭代中找到的最长单词即可。
要更高级地使用Java,请尝试使用Stream API:
Optional<String> longestWord= Arrays.stream("It is my phone".split(" "))
.max(Comparator.comparing(String::length));
答案 1 :(得分:0)
您需要将最大的单词保留在变量中并在循环外打印。您还需要从;
if(i > largest)
public static void main(String []args) {
int largest = 0;
String largestWord = "";
String banana = new String("It is my phone");
System.out.println("Results are;");
for (String retval: banana.split(" ")) {
for(int i = 0 ; i < retval.length() ; i++) {
if(i > largest) {
largest = i;
largestWord = retval;
}
}
}
System.out.println(largestWord);
}
请注意,变量应以小写Banana
-> banana
答案 2 :(得分:0)
第一个问题是,您有一个分号终止了if
主体if(i>largest);{
,使该块旁边的那个未连接。接下来,您只需要在拆分String
所得的数组中存储最大String
的索引。 Java变量名称以小写字母(banana
而非Banana
)开头。接下来,我将在正则表达式中使用\\s+
(以消耗输入中的任何连续空白)。而且,在完成循环后, 之后,我将使用格式化的io打印结果。喜欢,
int largest = 0;
String banana = "It is my phone";
String[] words = banana.split("\\s+");
for (int i = 1; i < words.length; i++) {
if (words[i].length() > words[largest].length()) {
largest = i;
}
}
System.out.printf("Results are %s.%n", words[largest]);
哪个输出
Results are phone.