2012-02-29 9 views
0

私はJavaで新しいですし、私のコードを書く際に問題があります。そのプロブラムは、ユーザーから10文字列を取って10文字列すべての中から最大のものを印刷したいと思っています。入力セクションはうまくいきますが、IDEエラーがあります:if条件を使用している間に "バイナリ 'オペレータ" 。コードを使用すると、文字列の長さではなく、文字列そのものを比較する必要があります。..以下入力10文字列、最大の文字を表示します。

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

「最大の文字列」はどういう意味ですか?最長?またはAsciiの合計は最大ですか?または何? – Kent

+0

また、 'i'(および' j')を使ったインデックス作成では、 'j ++'を 'j - 'に修正した後にArrayIndexOutOfBoundsを与えます。 –

答えて

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ベースの取得

+1

宿題タグ付けされた質問にコードを貼り付けることは理想的ではありません。 – sgowd

+0

私を許してください、私は将来は控えるでしょう – mindandmedia

+0

本当にありがとうございました。サーはそれを実行しようとしていましたが、実際には新しく、javaの構文が正しく分かりません。しかし、あなたたちの人々は私を助けてくれました。 – Farhan

2
array[i].length()>array[j].length() 

です。

1

'>'演算子の対象となる配列はString型であるため、有効な演算子ではありません。

あなたは次のように、あなたは、文字列の長さの比較を行う必要があります(文字数)を最長の文字列を確認したい場合は、次の

if(array[i].length() >array[j].length()){ 
+0

Thankxたくさんの人、私はそれをやった。私は皆さんから新しく有用なことを学びました。もう一度、ありがとう。 – Farhan

1

あなたは、アレイ内の個々の文字列のlenght()を使用することができます。これは整数型の与えられた文字列の長さを返すメソッドです。文字列には>演算子を使用しています。これを整数、つまり各文字列の長さに使用します。ここ

1
  1. 文字列の長さを比較するarray[i].length>array[j].lengthを使用してください。

  2. for(int j=10; j>0; j++):この入力がより長い場合には、ユーザの入力に

  3. チェックを読ん

    1. :jはarray

    2. アイデアの要素よりも大きい場合、これはあなたにIndexOutOfBoundsExceptionを与えます以前に入力された値(初期値として0を使用)

1

ループネストをよく見ておく必要があります。このネストの最終結果はあなたが配列、10個の要素を持つ各 を作成しているということです

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]として宣言された配列は、有効なインデックスを持っている:012345,6,7,8,9。この ループ内でarray[10]にアクセスしていますが、これは範囲外の例外で爆発します。 (また、j++とをインクリメント ですが、おっと、配列 の終わりに開始し、カウントダウンすることを目的。。)

配列の繰り返し処理を行う、それはこの式に固執するのがベストです:

for (int i = 0; i < array.length; i++) 

あなたがカウントダウンしたい場合は、することができますが、それは、よりトリッキーです:(。0に再び、N-1、包括的)

for (int i = array.length - 1; i >= 0; i--) 

This question も後方反復のために働く二つの追加の形式を示しています。私は 一度でのテストと反復ステップを組み合わせforループを嫌うものの

for (int i = array.length; --i >= 0;) 
for (int i = array.length; i-- > 0;) 

を、私は間違いなく、これらは、ジョブが正しく を成し遂げる両方のことを尊重することができ、慣用的である可能性が高い。

逆方向反復はまれです。

+0

偉大な先生、あなたの種類の応答のために。私はあなたの黄金の言葉から有益な知識を得ることに非常に満足しています。どうもありがとう。 – Farhan

関連する問題