我是java新手,编写代码时遇到问题。问题是,我从用户那里拿出10个字符串,并希望打印出所有10个字符串中最大的字符串。输入部分运行良好,但是有一个IDE错误:“二进制错误操作数”>'操作员“在使用if条件时。代码在下面..
import java.util.Scanner;
import java.io.InputStream;
public class Largest_String {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("Please Enter The 10 Strings: ");
for(int i=1; i<=10; i++){
System.out.print(i+") ");
String str=input.nextLine();
String array[]=new String[10];
for(int j=10; j>0; j++){
if(array[i]>array[j]){
System.out.println("The Largest String if"+ array[i]);
}
}
}
}
}
答案 0 :(得分:2)
array[i].length()>array[j].length()
你需要比较字符串长度而不是字符串本身。
答案 1 :(得分:1)
受“&gt;”约束的数组运算符的类型为String,因此这不是有效的运算符。
如果要确认最长的字符串(字符数),那么您应该对字符串的长度进行比较,如下所示:
if(array[i].length() >array[j].length() ){
答案 2 :(得分:1)
您可以在数组中使用单个字符串的lenght()。这是以整数类型返回给定字符串长度的方法。您正在使用>
运算符作为字符串,将其用于整数,即每个字符串的长度。
答案 3 :(得分:1)
这是一种略有不同的做法:
import java.util.Scanner;
import java.io.InputStream;
public class Largest_String {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("Please Enter The 10 Strings: ");
String longest = "";
for(int i=0; i<10; i++){
System.out.print("Enter String "+(i+1)+": ");
String str=input.nextLine();
if( str.length() > longest.length() )
{
longest = str;
}
}
System.out.println("The Largest String is "+ longest);
}
}
评论:习惯于做基于0的循环
答案 4 :(得分:1)
使用array[i].length>array[j].length
比较字符串的长度。
for(int j=10; j>0; j++)
:当j大于IndexOutOfBoundsException
array
这个想法:
答案 5 :(得分:1)
你需要仔细研究你的循环嵌套。看起来很像 像这样:
for (/* i */) {
String array[] = new String[10];
for (/* j */) {
/* ... */
}
}
此嵌套的最终结果是您正在创建十个数组
有十个元素。将数组移到外部for
循环,并生成
你知道为什么。
接下来,关注循环索引以及如何使用它们进行索引 数组:
for (int i = 1; i <= 10; i++) {
String array[] = new String[10];
for (int j = 10; j > 0; j++) {
if (array[i] > array[j]) {
}
}
}
声明为new String[10]
的数组具有有效索引:0
,1
,2
,
3
,4
,5
,6
,7
,8
,9
。您正在访问array[10]
循环,会超出范围异常。 (你也是
使用j++
递增,但打算从数组末尾开始
并倒计时。糟糕。)
迭代数组时,最好坚持使用以下公式:
for (int i = 0; i < array.length; i++)
如果你想倒计时,你可以,但这更棘手:
for (int i = array.length - 1; i >= 0; i--)
(同样,n-1到0,包括。)This question 显示了另外两种形式,它们也可用于向后迭代:
for (int i = array.length; --i >= 0; )
for (int i = array.length; i-- > 0; )
虽然我不喜欢结合测试和迭代步骤的for
循环
一个人去,我绝对可以尊重这两个人完成工作
正确而且可能是惯用的。
向后迭代很少见。