public class Phone {
public static void main(String args[]) {
String numbers[][] = { { "Tom", "555-3322" }, { "Mary", " 555-8976" },
{ "Jon", "555-1037" }, { "Rachel", "555-1400" } };
int i;
if (args.length != 1)
System.out.println("Usage: java Phone <name>");
else {
for (i = 0; i < numbers.length; i++) {
if (numbers[i][0].equals(args[0])) {
System.out.println(numbers[i][0] + ": " + numbers[i][1]);
break;
}
if (i == numbers.length)
;
System.out.println("Name not found.");
}
}
}
}
因此,在我尝试运行这些代码行之后,除了第一个sysout语句之外,我没有得到任何其他结果。
答案 0 :(得分:1)
您的代码错误很少。来自
用法:java手机
预计args
数组的预期内容应为"Phone"
<name>
,这两个元素是
if(args.length != 1)
无效条件。您可能应该用
替换它if (args.length < 2)
其他问题是<name>
是存储在args
中的args[1]
数组中的第二个元素所以
if(numbers[i][0].equals(args[0]))
应该是
if(numbers[i][0].equals(args[1])) //we want to compare name, not "Phone" string
涉及的最后问题
if (i == numbers.length);
System.out.println("Name not found.");
i
中的将永远不会等于number.length
,因为for (i = 0; i < numbers.length; i++)
循环仅在i<number.length
时才会重复。所以这个条件应该替换为
if (i == numbers.length -1)
在此条件之后立即有分号表示空指令,这意味着
if (i == numbers.length - 1);
System.out.println("Name not found.");
与
基本相同if (i == numbers.length - 1)
;
System.out.println("Name not found.");
这意味着System.out.println("Name not found.");
的执行不依赖于if
条件的结果。
要解决此问题,只需删除此额外的;
,并避免此问题始终包含应该依赖于if
else
for
while
的代码阻止{...}
。
答案 1 :(得分:0)
您可能正在运行此java代码而未指定参数
例如。 java Phone 会将输出显示为用法:java Phone
但如果你用一个参数运行它,你肯定会有一个输出
例如。 java Phone Tom 将输出为 Tom:555-3322
答案 2 :(得分:0)
您的代码中有两个小错误。一个与您没有使用if
代码
if(i == numbers.length);
System.out.println("Name not found.");
这里的问题不容易发现。 if语句后面有一个分号,表示if语句没有代码块,System.out.println
总是被执行。
第二个问题是你检查i == numbers.length
。在for-loop
内部,这是永远不会的,因为数组索引是基于零的。表示当您有四个条目时,最高指数为三。所以这种情况永远不会成真。
您应该像这样修复代码。
if(i == numbers.length-1) {
System.out.println("Name not found.");
}