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メソッドは正規表現をサポートする; 正規表現 以上の補足知識があれば、以下の内容はよく理解できます.
分割対象文字列は次のとおりです.
二、1つ以上のスペースで文字列を分割する
正しいコードは次のとおりです.
以下のコードは山東省の第7回ACM省試合のK題で、Reverse Wordsで、javaコードは以下の通りで、まだテストしたことがなくて、正しいかどうか分からないで、hhh
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
一般フォーマット: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()メソッドを呼び出すだけでよい.
知識の補完
\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