我需要撰寫一個 Java 程式,列印出包含字母z? 的所有字串(來自給定陣列)。我需要在不使用函式的情況下進行.contains。
到目前為止我的代碼:
public static void main(String[] args) {
System.out.println("Program prints out all the words with common letter:");
String[] strArr = {"computers", "information systems", "test"};
System.out.println(Lettercheck(strArr , 'x'));
}
public static void Lettercheck(String[] strArr , char ch) {
for (int i = 0; i < strArr.length; i ) {
}
}
uj5u.com熱心網友回復:
您可以使用 .charAt() 函式,它回傳字串中的當前字符。
例如。
String a = "Hello";
System.out.println(a.charAt(0));
這將為您提供“H”作為輸出。所以你的代碼應該是這樣的:
public static void Lettercheck(String[] strArr , char ch) {
for (int i = 0; i < strArr.length; i ) {
for( int j=0; j<strArr[i].length();j ){
if(strArr[i].charAt(j)==ch)
System.out.println(strArr[i]);
break;
}
}
}
uj5u.com熱心網友回復:
tl;博士
List
.of( "computers" , "information systems" , "zebra" )
.stream()
.filter(
input -> input.codePoints().anyMatch( codePoint -> codePoint == "z".codePointAt( 0 ) )
)
.toList()
在 IdeOne.com 上查看此代碼的實時運行情況。
[斑馬]
過時的 char
該char型別自 Java 2 以來一直是遺留的,基本上已損壞。作為 16 位值,achar在物理上無法表示大多數字符。
碼點
相反,使用代碼點整數來處理單個字符。
獲取分配給我們的目標字母的代碼點編號z,它是十進制的 122。
int targetCodePoint = "z".codePointAt( 0 ); // Get the code point assigned to the letter “z”, 122.
定義我們的輸入,并騰出一個地方來放置包含目標字母的單詞/短語。
List < String > inputs = List.of( "computers" , "information systems" , "zebra" );
List < String > hits = new ArrayList <>( inputs.size() );
回圈每個輸入的單詞/短語。
for ( String input : inputs )
{
…
}
對于這些輸入中的每一個,回圈該單詞/短語中每個字符的代碼點。
測驗每個代碼點以查看它是否與我們的目標代碼點 (122) 匹配。如果是這樣,通過添加到我們的hits串列中來記住這個詞,然后跳出內部回圈(代碼點回圈)。
loopingInputs:
for ( String input : inputs )
{
// Loop the code point of each character.
int[] codePoints = input.codePoints().toArray();
for ( int codePoint : codePoints )
{
if ( codePoint == targetCodePoint )
{
hits.add( input );
break loopingInputs;
}
}
}
將結果轉儲到控制臺。
System.out.println( "hits = " hits );
查看此代碼在 IdeOne.com 上實時運行。
點擊數 = [斑馬]
我們可以通過使用流和 lambda 來精簡此代碼以使其更緊湊。請參閱tl;dr頂部的部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/371785.html
