[英]Java: retrieving and printing out items from an arraylist using getters
[英]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' + '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.