簡體   English   中英

從數組中選擇的項目中打印出特定的字母(Java)

[英]printing out specific letters from chosen items from an array (Java)

我非常非常不熟悉Java,因此很抱歉,如果我看不到這件事,我深表歉意。 我正在我的大學學習Java課程,而我們才剛剛開始學習數組。 我們分配了一個簡單的練習:

編寫一個程序,創建一個名為Bob,Ann和Tom的數組(名稱)。 程序應遍歷數組,並將每個名稱的首字母作為單詞打印出來(“ BAT”)。

我們提供了一種使用for循環執行此操作的方法,該方法有效:

String [] names = {"Bob", "Ann", "Tom"};
String initials = "";
for (int i = 0; i < names.length; i++)
{
     initials = initials + names[i].charAt(0);
}
System.out.print(initials);

但是我想用char.At()方法以另一種方式做到這一點:

  System.out.print(names[0].charAt(0) + names[1].charAt(0) + names[2].charAt(0) + "\n");

但是,輸出是215,而不是“ BAT”。誰能解釋為什么會這樣,我的代碼有什么問題? 非常感謝!

====編輯:

我現在嘗試了chsdk,jgr208,Pier-Alexandre Bouchard和Gorfield建議的四種解決方案,但是它們都不起作用。 我仍然以215結尾。我還嘗試了將char轉換為該線程中提到的字符串的方法; 我仍然以215結尾。這讓我想到也許我的數組聲明有問題? 有什么建議么? 我在下面嘗試過的代碼詳細信息。

String [] names = {"Bob", "Ann", "Tom"};
String initials = "";
initials = initials + names[0].charAt(0);
initials = initials + names[1].charAt(0);
initials = initials + names[2].charAt(0);
System.out.print(initials);

= 215

String [] names = {"Bob", "Ann", "Tom"};
String a = names[0].charAt(0) + "";
String b = names[1].charAt(0) + "";
String c = names[2].charAt(0) + "";
System.out.print("" + a + "" + b + "" + c + "");

= 215

String [] names = {"Bob", "Ann", "Tom"};
String a = new Character(names[0].charAt(0)).toString();
String b = new Character(names[1].charAt(0)).toString();
String c = new Character(names[2].charAt(0)).toString();
System.out.print("" + a + "" + b + "" + c + "");

= 215

String [] names = {"Bob", "Ann", "Tom"};
String a = Character.toString(names[0].charAt(0));
String b = Character.toString(names[1].charAt(0));
String c = Character.toString(names[2].charAt(0));
System.out.print("" + a + "" + b + "" + c + "");

= 215

String [] names = {"Bob", "Ann", "Tom"};
String a = String.valueOf(names[0].charAt(0));
String b = String.valueOf(names[1].charAt(0));
String c = String.valueOf(names[2].charAt(0));
System.out.println(a + "" + b + "" + c);

= 215

String [] names = {"Bob", "Ann", "Tom"};
System.out.printf("%s%s%s",names[0].charAt(0),names[1].charAt(0),names[2].charAt(0));

= 215

String [] names = {"Bob", "Ann", "Tom"};
System.out.print(names[0].substring(0));
System.out.print("\n");
System.out.print(names[1].substring(0));
System.out.print("\n");
System.out.print(names[2].substring(0));
System.out.println("");

= 215

String [] names = {"Bob", "Ann", "Tom"};
String initials = "";
initials+=names[0].charAt(0);
initials+=names[1].charAt(0); 
initials+=names[2].charAt(0);
System.out.print(initials);

= 215

String [] names = {"Bob", "Ann", "Tom"};
System.out.print("" + names[0].charAt(0) + "" + names[1].charAt(0) + "" + names[2].charAt(0) + "\n");`

= 215

編譯器通過將每個char值操作數( 'B''A''T' )提升為int值來評估常量表達式'B' + 'A' + 'T' ,該過程稱為擴大基元轉換

看一下ASCII表( http://www.asciitable.com/ ),以獲取每個字符的值:

  • B = 66
  • A = 65
  • T = 84

所以'B' + 'A' + 'T'等於int常數66 + 65 + 84 = 215.

如果要打印BAT ,則需要創建一個新字符串。 這樣的事情應該起作用:

System.out.print("" + names[0].charAt(0) + names[1].charAt(0) + names[2].charAt(0) + "\n");

215是B + A + T(66 + 65 + 84)的ASCII求和,基本上不是串聯它認為您要添加它們的字符。 您可以通過使用printf()而不是常規打印來解決此問題:

System.out.printf("%s%s%s",names[0].charAt(0),names[1].charAt(0),names[2].charAt(0));

以下代碼是可能的解決方案:

System.out.print(names[0].substring(0));
System.out.print(names[1].substring(0));
System.out.print(names[2].substring(0));
System.out.println("");

您只需單獨打印每個字母,然后使用print("\\n")進行換行

您必須將這些字母串聯起來:

System.out.print(names[0].charAt(0) +""+ names[1].charAt(0) +""+ names[2].charAt(0) + "\n");

因為在您的情況下,您對這些字符的ASCII碼求和而不是對其進行串聯,因此,您得到215。

或將其值分配給您的initials字符串,然后打印它:

initials+=names[0].charAt(0);
initials+=names[1].charAt(0); 
initials+=names[2].charAt(0);
System.out.print(intitials);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM