簡體   English   中英

如果數組中不包含字符串,如何返回特定值

[英]How do I return a specific value if a string is not contained in an array

我寫了一個程序,其中有兩個數組。 一個是包含城市名稱的字符串數組,另一個包含每個城市之間的距離。 運行一個方法,該方法返回方法調用中兩個城市之間的總距離。 但是,如果數組中未包含一個或兩個城市,則我希望程序返回值-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;
   }
}

您應該給變量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;

您必須將方法中的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;
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM