2019年11月11日夜09時18分09秒
演習1:入力のn文字列のライン、最長、最短の文字列を検索する文字列、同じ最長の場合、最短、一緒に印刷。
最初は思った:N行の文字列を配列に。(スキャナS =新しいスキャナ(System.in );)
書き込み方法は、最長文字列を検索する:0最初の要素が最も長い文字列の長さと呼びます。現在の要素数0のレコード長さが最大値です。その長さは最大値が文字列の新しい長さに更新さよりも大きい場合、残りの文字列をループするために、文字列は現在の文字列に更新されます。最短の文字列を検索するのと同じ方法。
あなたは、同じ長さの長い文字列を持っている場合は、どのように?同じ文字列の長さは、アレイ、アレイに文字列の同じ長さを開くように加えて、1個以下であってもよく、配列を返す:アイデアが開始します。最後に、変化が成功しない、方法はまた、文字列の連結を考え、別の文字列を定義する、同じ長さがある場合、2つの文字列が一緒にスプライスされ、スプライシング戻り列
プライベート 静的文字列findMin(String []型ARR){ 文字列STR4 = ARR [0 ]。 // 文字列STR5 = ARR [arr.length-1]。 INT分= str4.length()。 以下のために(INT iが= 1; I <arr.length; I ++ ){ 場合(ARR [I] .LENGTH()< 分){ 分 = ARR [I] .LENGTH()。 STR4 = ARR [I]。 用(INT J = I + 1、J <arr.length; J ++ ){ 場合(ARR [J] .LENGTH()== ARR [I] .LENGTH()){ 列STR5 = ARR [J]。 STR4 = STR4 +」「+ 化5。 } } } } 戻り STR4 +」 " 。 }
当初は、最初に定義された追加の文字列があるかもしれませんが、この文字列は、そう、それは内部の裁判官文で定義される、存在しない可能性があり、文字列の連結を達成するために、スプライシングリターンの結果を。
主な機能のもう一つの問題:その番号を入力し、入力文字列の数に起因した後、その後、入力フォーマットが変更されたため、コンパイラはキャリッジリターンとしてデフォルト設定されます、比較するための入力文字列を思い出しました文字列は、あなたがnexLine()、Enterキーを交換してくださいする必要があります。あります:文字列配列への入力の欠如は、ステートメントの内側に比較すること(不注意!!)
S =スキャナの新新しいスキャナ(System.in); System.out.printlnは( "n個の文字列を入力してください" ); int型のn = s.nextInt(); String []型ARR = 新しい新しい[n]の文字列; s.nextLine (); のSystem.out.printlnは、( "文字列を入力してください" ); のための(INT I = 0、I <N - 、I ++ ){ ARR [I] = s.nextLine(); }
全体のコードは次のとおりです。
インポートjava.util.Scanner; // N列の入力列、最長最短の文字列を検索(もし2つの印刷同じ数の) パブリック クラスをFINDSTRING { 公共 静的 ボイドメイン(文字列[]引数){ スキャナS = 新新しいスキャナ(System.in); System.out.printlnは( "n個の文字列を入力してください" ); int型のn = s.nextInt(); String []型ARR = 新しい新しい文字列[n]は、 s.nextLine( ); のSystem.out.printlnは、( "文字列を入力してください" ); のための(INT I = 0、I <N - 、I ++ ){ ARR [I]= S.nextLine(); } 文字列の最大値 = FindMax(ARR) のSystem.out.println( "最大列:" + max.toString()); // 文字列toStringメソッドは、書き換えられた、それが印刷され文字列 文字列分= FindMin(ARR) のSystem.out.println( "最小の文字列:" + min.toString()); } プライベート 静的ストリングFindMin(文字列[] ARR){ 文字列STR4 = ARR [0 ]; // 文字列STR5 = ARR [-arr.length 1]; INT分= str4.length(); のための(INT I = 1; I <arr.length; I ++){ 場合(ARR [I] .LENGTH()< 分){ 分 = ARR [I] .LENGTH()。 STR4 = ARR [I]。 用(INT ; J <arr.length、J = I + 1、J ++ ){ 場合(ARR [J] .LENGTH()== ARR [I] .LENGTH()){ 文字列STR5 = ARR [J]。 STR4 = STR4 +」「+ 化5。 } } } } 戻り STR4 +」 " 。 } プライベート 静的文字列FindMax(String []型ARR){ 文字列str = ARR [0]; // ビット番号0を順次比較し、最も長い文字列strの長さの配列として定義される // 文字列化6 = ARR [arr.lengthを- 1。 ]; // 文字列[] = STRR新しい新しいString [arr.length]; int型の最大値= str.length(); のための(INT。I = 1; I <arr.length; I ++ ){ IF(ARR [I] .LENGTH ()> MAX){ // 文字列の長さがより大きければ 、最大= ARR [I] .LENGTH(); // 文字列の長さが更新される最大 STR ARR = [I]; // そして、文字列STR割り当て のための(int型1 = I + J; J <arr.length; J ++){ // 同じ長さの文字列であれば IF(ARR [J] .LENGTH()== ARR [I] .LENGTH()){ 文字列化6 ARR = [J]は; // 新しい化6に、この文字列、その後に沿って印刷 STR STR = + "" + 化6; } } } } 戻り STR + "" ; } }