输入10个字符串,打印最大的一个

时间:2012-02-29 11:45:23

标签: java java.util.scanner

我是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]);
            }

            }
        }
    }
}

6 个答案:

答案 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)

  1. 使用array[i].length>array[j].length比较字符串的长度。

  2. for(int j=10; j>0; j++):当j大于IndexOutOfBoundsException

  3. 中的元素时,这会给您array
  4. 这个想法:

    1. 读入用户输入
    2. 检查此输入是否长于先前输入的值(使用0作为初始值)

答案 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]的数组具有有效索引:0123456789。您正在访问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循环 一个人去,我绝对可以尊重这两个人完成工作 正确而且可能是惯用的。

向后迭代很少见。