如果字符串未包含在数组中,如何返回特定值

时间:2015-12-02 01:26:30

标签: java arrays

我编写了一个程序,其中有两个数组。一个是包含城市名称的字符串数组,另一个包含每个字符串之间的距离。运行方法,该方法返回方法调用中两个城市之间的总距离。但是,如果数组中没有包含一个或两个城市,我希望程序返回值-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;
   }
}

2 个答案:

答案 0 :(得分:0)

您应该为变量jk提供初始值-1。如果数组中不包含xy,则循环后jk仍为-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)

您必须将方法中的kj初始化为某个不是数组索引的索引,例如(-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;
   }
}