JAva基礎知識(4)

3334 ワード

(1)for(String arg:args)増強後のforサイクルは,主な役割は以前のforサイクルを簡略化し,for(int i=0;i
一般フォーマット:for(タイプパラメータ名:配列クラスまたは集合クラス)
例えばint[]num={1,2,3,4,5};
            for(int arg:num){
             System.out.println(arg);
}
(2)Pattern.compile関数を用いる場合,正規表現の挙動を制御するパラメータを加えることができる.
Pattern p=Pattern.compile(String regex,int flag);
(3)new Scanner(System.in)によってScannerが作成されると、コンソールは入力を待ち続け、キーのノックが終わるまで入力した内容をScannerに伝え、スキャン対象とする.入力した内容を取得するには、ScannerのnextLine()メソッドを呼び出すだけでよい.
知識の補完
  • Stringのsplitメソッドは正規表現をサポートする;
  • 正規表現\sは任意の空白文字を表し、+は1回または複数回を表す.
  • 以上の補足知識があれば、以下の内容はよく理解できます.
    分割対象文字列は次のとおりです.
    String str = "a  b     c  d e f      g"
    文字列の空白は、単一のスペース、複数のスペース、tabタブです.
    二、1つ以上のスペースで文字列を分割する
    正しいコードは次のとおりです.
    String [] arr = str.split("\\s+");
    for(String ss : arr){ System.out.println(ss); } 

    以下のコードは山東省の第7回ACM省試合のK題で、Reverse Wordsで、javaコードは以下の通りで、まだテストしたことがなくて、正しいかどうか分からないで、hhh
    import java.util.*;
    public class Main {
           public static void main(String[] args){
        	   Scanner scanner=new Scanner(System.in);
        	   int t;
        	   t=scanner.nextInt();
                for(int i=1;i<=t;i++){
                	String str=scanner.nextLine();
                	String arr[]=str.split("\\s");
                    for(int k=0;k=0;j--){
                    		  System.out.print(arr[k].charAt(j));
                    	  }
                    	  if(k!=arr.length)
                    	  System.out.print(" ");
                    }
                    System.out.println();
                }
           }
    }
    

    JAvaにおけるnextLine()とnext()の違い
    (1)まず、next()は必ず有効文字を読み取ってから入力を終了することができ、有効文字を入力する前に遭遇したスペースキー、Tabキー、Enterキーなどの終了子に対して、next()メソッドは自動的に削除され、有効文字を入力した後にのみ、next()メソッドはその後に入力したスペースキー、Tabキー、Enterキーなどをセパレータまたは終了子と見なす.簡単に言えば、next()このスキャナからの次の完全タグを検索して返します.完全タグの前後は区切りモードに一致する入力情報なので、nextメソッドはスペース付き文字列を得ることができません.nextLine()メソッドの終端はEnterキーだけです.つまり、nextLine()メソッドはEnterキーの前のすべての文字を返します.スペース付き文字列を得ることができます.
    例えば、44444 88888と入力し、next()を使用すると44444と読み込まれます.ここでnext()はスペースを終端としているので、next()はスペースを受け入れることはできませんが、nextLineはスペースを受け入れることができ、読み込んだのは44444 88888です.
    ただしnextline()関数はEnterキーを終端とするので、スペースは許容できます
    Scanner sc=new Scanner(System.in);  System.out.print(「最初の文字列を入力してください:」);  s1=sc.nextLine();  System.out.print(「2番目の文字列を入力してください:」);  s2=sc.next();  System.out.println(「入力文字列は:」+s 1+」  "+s2); }}
    実行結果:
    最初の文字列を入力してください:home 2番目の文字列を入力してください:work入力の文字列は:home  work
    プログラムを変更すると s1=sc.next(); s2=sc.nextLine();
    実行結果:
    最初の文字列を入力してください:home 2番目の文字列を入力してください:入力した文字列は:home
    nextLine()はnext()によって取り除かれたEnterを自動的に彼の終端として読み取ったので,s 2にキーボードから値を入力することはできなかった.
    Scanner sc=new Scanner(System.in);System.out.print("最初の文字列を入力してください:");s 1=sc.next();sc.nextLine();(前のEnterキーを受け入れる)System.out.print("2番目の文字列を入力してください:");s 2=sc.nextLine();System.out.println("入力文字列は:"+s 1+"  "+s2);}
    実行結果:
    最初の文字列を入力してください:home 2番目の文字列を入力してください:work入力の文字列は:home  work