我们被要求做以下事情:
接收家庭成员的名字(3到6个家庭成员),创建一个字符串数组。编写一个名为generateNewName()的静态方法,如下所示:它接收字符串数组作为参数。它通过使用数组中每个字符串的第二个字符来创建一个新的名字。例如:如果您输入Rocky、Ashley、Ocarina、Baron、Ernest作为名字,则结果应该是oscar。显示输入的名称和新生成的名称
这就是我所拥有的:
导入java.util。阵列;导入java.util.Scanner;
公共类山麓{
static Scanner input;
public static void main(String[] args) {
input = new Scanner (System.in);
String[] getNames = new String[5];
char Output;
Output = generateNewName(getNames);
System.out.println(Output);
for(int x = 0; x < 5; x++){
System.out.println("Enter 5 names: ");
getNames[x] = input.nextLine();
}
}
public static char generateNewName(String[] getNames)
{
String newS = Arrays.toString(getNames);
char result = '\0';
for(int j = 0; j < getNames.length; j++){
result = (char) (result + newS.charAt(1));
}
return result;
}
}
它正在正确接受输入,但它似乎没有执行生成NewName方法。我正在使用的方法类型是否出错?是否应生成新名称返回字符串类型?如果是这样,我如何获取所有输入字符串的第二个字母并连接它们?谢谢
“输入5个名称:”
具有误导性。考虑“Entername”(x1)“(of“5”):”
或类似的东西。
但是要回答你的问题:在你得到任何名字之前,你正在运行生成NewName
!它正在为仅包含空元素的数组执行!
更改此:
Output = generateNewName(getNames);
System.out.println(Output);
for(int x = 0; x < 5; x++){
System.out.println("Enter 5 names: ");
getNames[x] = input.nextLine();
}
对此
for(int x = 0; x < 5; x++){
System.out.println("Enter 5 names: ");
getNames[x] = input.nextLine();
}
Output = generateNewName(getNames);
System.out.println(Output);
:)
还可以考虑将变量重命名为(a)遵循命名约定,例如变量名称应为小写,以及(b)以更好地指示它们所包含的内容以及它们是什么(字符串,字符,数组等)。例如名称
或名称数组
而不是 getNames
和 new 名称
或输出名称
而不是输出
。
最后,正如其他人所说,您正在生成NewName
中使用并返回一个字符,显然名称是一个字符串,而不是一个字符。
你的generateNewName()方法应该返回一个字符串,而不是一个字符。
然后你必须改变它
char result = '\0';
具有
String result = "";
然后开始将字母附加(使用)到String。
您还可以阅读有关StringBuilder的信息,这将使代码更加高效。
另外,String newS=Arrays.toString(getNames);
这一行没有多大意义。你想循环浏览你的名字,而不是你名字的所有字母。
我会将该循环重写为:
for (int i = 0 ; i < names.length ; i++) {
result += names[i].charAt(1);
}
或者,使用每个循环
for (String name : names) {
result += name.charAt(1);
}
当我将对象引用(数组是对象)传递给方法时,会传递值,对吗? 在以下代码中,初始值为:333。方法传递后,值将更改。为什么?在这种情况下,引用传递的是值吗? 数组是“特例”吗? 另一种方法:(逻辑“传递值”):
问题内容: 我正在尝试学习go,并且一开始我想尝试组装一个超级简单的Web服务器来控制iTunes。过去,我已经多次达到这个目的,并认为我可以在这里简单地取消对osascript的调用。 注释掉的“ say 5”命令 确实 起作用。 我收到的回应如下: 我不确定从这里要去哪里,任何方向都将不胜感激。 问题答案: 我明白了 我认为exec.Command(…)如果参数中有空格,则在参数中添加双引号,
有时对一个类的某些方面进行 参数化(parameterize)是很有用的。例如, 你可能需要管理不同版本的 gem 软件包,既可以为每一种版本创建分离的单独的类, 也可以使用继承和覆盖,为一个类传递一个版本号作为参数。 操作步骤 声明参数作为如下类定义的一部分: class eventmachine( $version ) { package { "eventmachine": pro
问题内容: 我有一个使用处理程序发布可运行实例的线程。它工作得很好,但是我很好奇我如何将参数传递给Runnable实例使用?也许我只是不了解此功能的工作原理。 为了避免出现“您为什么需要此问题”的问题,我有一个线程化的动画,必须调出UI线程来告诉它实际绘制的内容。 问题答案: 只需使用接受参数的构造函数实现的类就可以了, 您可以使用参数化构造函数创建Runnable类的实例。
几天前,我在java代码中输入了一个错误,但它编译后运行良好。(尽管结果很奇怪。) 我的代码是: 我无法找到为什么第二个作业没有错误,并且打印了124。(当然,“|”在ASCII码中是124。但为什么是“124”,而不是“|”?) 这是编译器错误吗?还是我还不知道的正确java语法?
问题内容: 问题摘要: 我想将具有类型参数(例如)的类作为类型参数传递给泛型方法。 假设我有一个方法: 当然,此方法对于任何类型的类都可以正常使用。我可以这样调用该方法,例如: 问题: 我发现我不能这样做: 从句法上讲,这显然是无效的。但是,我不确定如何实现这样的目标。我当然可以通过,但是泛型类型的添加使其在语法上不再有效,并且我想不出解决方法。 唯一的直接解决方案是这样的事情(看起来很愚蠢):