【问题标题】:Using an array in an if statement在 if 语句中使用数组
【发布时间】:2013-06-23 16:52:25
【问题描述】:

我想为我的程序使用条件数组,但我在实现它时遇到了问题。

我有一个数组:

//I want to put my condition in array column 3 (in title)
Data[] hotel = {
        new Data(-6.8851995, 108.4978142, "Grage Sangkan Hotel & Spa",
                "Jl. Raya Sangkanhurip No.1 Desa Sangkanhurip"),
        new Data(-6.879592, 108.513353, "Prima Hotel Sangkanhurip ",
                "Jl. Panawuwan No.121 Kec. Cigandamekar "),
        new Data(-6.883889, 108.500000, "Tirta Sanita Spa Resort ",
                "Jl.Panawuwan No.98 Kec.Cigandamekar")
}

我有一个条件:

//my condition equals array column 3 (in title)
if (v.getTitle().equals(hotel[3] ? ??)){  // in here I don't know what can I do 
    tempat = new Intent(Peta.this, KetWisata.class);
    // TODO Auto-generated method stub
    if (v.getTitle().contains("Wisata Cibulan")) {
        tampil = "wis_cibulan";
    }
    if (v.getTitle().contains("Linggarjati Indah")) {
        tampil = "wis_linggarjati";
    }
    if (v.getTitle().contains("Balong Dalem")) {
        tampil = "wis_balongdalem";
    }
} else {
    // ...
}

【问题讨论】:

  • 您想获取数组第三个元素的标题吗?可以展示一下Data类的代码吗?

标签: java arrays if-statement


【解决方案1】:

与使用v.getTitle()v 中获取标题元素的方式相同,您需要使用类似的方法从数组中的Data 元素中获取标题值。

假设v 也是Data 类型,那么您要求的代码是...

if ( v.getTitle().equals( hotel[3].getTitle() )) {
    // Your code                  -----------
} 

这样您就可以测试这两个标题是否相等。只需将hotel[3] 视为Data 类型的任何其他变量即可。

【讨论】:

    【解决方案2】:

    首先,数组是从零开始的。长度为 3 的数组的最大可索引元素为 2 - 任何更高的值,您都会得到 ArrayIndexOutOfBoundsException

    第二,这一行:

    if (v.getTitle().equals(hotel[3] ? ??)
    

    不正确,即使不存在问号也不会起作用。原因是: hotel 的类型是 Data,我们只能假设 getTitle() 返回一个 String。您无法将 StringData 进行比较。

    你想要的是这样的:

    if (v.getTitle().equals(hotel[2].getTitle())
    

    【讨论】:

      【解决方案3】:

      好的,你可以像这样创建一个 Void:

      class RandomStuffs {
      public void ArrayEquals(ArrayList Array , string SearchData){
      int I = 0;
      int T = 0;
      Boolean Continue = false;
      for(I = 0;I < Array.length ; I ++){
      for(T = 0;T <Array[i].length;T ++){
      if(Array[I][T] == SearchData ){
      Continue = true;
      break;
      }
      }
      if(Continue == true){
      return true;
      }else {
      return false;
      }
      }
      }
      

      然后这样称呼它:

      Class Main {
      public static void main(String args[]){
      RandomStuffs Class = new RandomStuffs();
      if(Class.ArrayEquals(hotel , "Wisata Subilian"){
      //Code To Execute
      }else {
      //Error Handler Or Another Block
      }
      }
      }
      

      此循环检查多维数组是否包含字符串
      如果这不是你想要的,那么你可以在循环中玩一点,它会正确地工作。 或者只是告诉我,我会回答你 在您的问题不清楚之间,您并没有真正指定您需要什么

      【讨论】:

        猜你喜欢
        • 2018-04-24
        • 2015-09-06
        • 1970-01-01
        • 2016-07-26
        • 2022-01-25
        • 2013-12-13
        • 2013-11-22
        • 1970-01-01
        • 2017-01-06
        相关资源
        最近更新 更多