我编写了一个程序,其中有两个数组。一个是包含城市名称的字符串数组,另一个包含每个字符串之间的距离。运行方法,该方法返回方法调用中两个城市之间的总距离。但是,如果数组中没有包含一个或两个城市,我希望程序返回值-1,但我无法弄清楚如何操作。这是一个学校作业,我们只涉及创建我们自己的方法,所以我必须通过使用循环和if语句实际工作,并且不能只是写入一个命令来立即检查是否值在数组中。
import java.util.Scanner;
public class Q3{
public static void main(String[] args){
Scanner kbd = new Scanner(System.in);
String[] towns = {"Halifax", "Enfield", "Elmsdale", "Truro", "Springfield", "Sackville", "Moncton"};
int[] distances = {25, 5, 75, 40, 145, 55, 0};
System.out.println("The distance between the two towns is " + distance(towns, distances, "Truro", "Moncton"));
}
public static int distance(String[] towns, int[] distances, String x, String y){
int totdistance=0;//define total distance
int j = 0;
int k = 0;
for(int i=0;i<towns.length;i++){//define variable j
if (x.equals(towns[i])){
j=i;
}
}
for(int i=0;i<towns.length;i++){//define variable k
if (y.equals(towns[i])){
k=i;
}
}
if (!y.equals(towns[k])){
totdistance=-1;
}
if (j<k&&j!=-1){//if j less than k calculate distance
for(;j<k;j++){
totdistance+=distances[j];
}
}
else if (k<j&&k!=-1){//if k less than j calculate distance
for(;k<j;k++){
totdistance+=distances[k];
}
}
return totdistance;
}
}
答案 0 :(得分:0)
您应该为变量j
和k
提供初始值-1
。如果数组中不包含x
或y
,则循环后j
或k
仍为-1
,因此您可以返回-1
int j = -1;
int k = -1;
for(int i=0;i<towns.length;i++){//define variable j
if (x.equals(towns[i])){
j=i;
}
}
for(int i=0;i<towns.length;i++){//define variable k
if (y.equals(towns[i])){
k=i;
}
}
if (j == -1 || k == -1)
return -1;
答案 1 :(得分:0)
您必须将方法中的k
和j
初始化为某个不是数组索引的索引,例如(-1)
然后在前两个循环之后检查它们中的任何一个是否等于它们的初始值。
这是一个修改过的代码,如果在数组中找不到一个或两个城市,它将返回-1:
import java.util.Scanner;
public class Q3{
public static void main(String[] args){
Scanner kbd = new Scanner(System.in);
String[] towns = {"Halifax", "Enfield", "Elmsdale", "Truro", "Springfield", "Sackville", "Moncton"};
int[] distances = {25, 5, 75, 40, 145, 55, 0};
System.out.println("The distance between the two towns is " + distance(towns, distances, "Truro1", "Moncton1"));
}
public static int distance(String[] towns, int[] distances, String x, String y){
int totdistance=0;//define total distance
int j = -1;
int k = -1;
for(int i=0;i<towns.length;i++){//define variable j
if (x.equals(towns[i])){
j=i;
}
}
for(int i=0;i<towns.length;i++){//define variable k
if (y.equals(towns[i])){
k=i;
}
}
if(k==-1||j==-1){
return -1;
}
if (!y.equals(towns[k])){
totdistance=-1;
}
if (j<k&&j!=-1){//if j less than k calculate distance
for(;j<k;j++){
totdistance+=distances[j];
}
}
else if (k<j&&k!=-1){//if k less than j calculate distance
for(;k<j;k++){
totdistance+=distances[k];
}
}
return totdistance;
}
}