在数组中搜索字母和数字的组合

时间:2017-02-21 22:59:46

标签: java arrays search

我是第一年的程序员。

我一直在尝试使用输入搜索存储了四个变量的数组。

我发现的所有示例都使用int,并在列表中搜索数字。

我的程序必须搜索字母和数字的组合。 (例如COP 2800)

courseInfo.java:22: error: cannot find symbol
         System.out.println(linearSearch(list, courseInput));
                                               ^
  symbol:   variable courseInput
  location: class courseInfo
1 error

请使用非专业人士的条款,我只在这堂课中待了三个星期。

如果我从第21行删除COP,PSY,EVR和COP,我会返回不同的错误;

var originalTabs = $('.originalTabs').html();

function clearTabs() {
  $('.originalTabs').html(originalTabs);
}

//clearTabs();
//desktopTabs(); 

function desktopTabs() {
  clearTabs();

  // cretate tabs for desktop
  var headers = $("#tab_description h6");

  $('#tab_description h6').each(function(i) {
    $(this).nextUntil("h6").andSelf().wrapAll('<div class="tab" id="tab-' + i + '"/>');
  });

  for (var i = 0; i < headers.length; i++) {
    $('.tabs').append('<li class=""><a href="#tab-' + i + '">' + headers[i].innerHTML + '</a></li>');
  }

  $('ul.tabs').each(function() {
    var active, content, links = $(this).find('a');
    var listitem = $(this).find('li');
    active = listitem.first().addClass('active');
    content = $(active.attr('href'));
    $('.tab').hide();
    $(this).find('a').click(function(e) {
      $('.tab').hide();
      $('ul.tabs li').removeClass('active');
      content.hide();
      active = $(this);
      content = $($(this).attr('href'));
      active.parent().addClass('active');
      content.show();
      return false;
    });
  });

  headers.remove(); // remove headers from description  
  $('#tab-0').show(); // show the first tab
}

function mobileTabs() {
  clearTabs();

  //alert("loaded mobile");

  var headers = $("#tab_description h6");

  $(headers).each(function(i) {
    $(this).append('<a href="#accordion_' + (i + 1) + '" id="accordion_' + (i + 1) + '"></a>');
    //$(this).nextUntil("h6").andSelf().wrapAll('<div class="aTab" id="tab-'+i+'"/>');
    $(this).on('click', function() {
      tabClick($(this));
    });
  });

  $('#tab_description h6').first().trigger('click').addClass("active");
  $('#tab_description h6').first().nextUntil("h6").show();
}

var tabClick = function(x) {

  //alert("clicked");
  var accordionContent = $('#tab_description p, #tab_description ul, #tab_description table, #tab_description div');

  $('#tab_description h6').removeClass("active");
  if (!$(x).hasClass("active")) {
    $(x).addClass("active");
  }

  // Check if current accordion item is open
  var isOpen = $(x).next().is(":visible");

  // Hide all accordion items
  accordionContent.hide();

  // Open accordion item if previously closed
  if (!isOpen) {
    x.nextUntil('h6').show();
    x.nextUntil(accordionContent).show();
  }

  // Disabled to stop on mobile auto scrolling down to product description when clicking through...
  //$('html, body').animate({
  //    scrollTop: $(x).offset().top - 15
  //}, 2000);

  //return false;
}

//bind to resize
$(window).resize(function() {
  if (isMobileLandscapeOnly.matches || isTabletLandscapeOnly.matches) {
    desktopTabs();
    $('#tab_description h6').on("click, touchstart", tabClick);

  } else if (isMobilePortraitOnly.matches || isTabletPortraitOnly.matches) {
    mobileTabs();
    $('#tab_description h6').on("click, touchstart", tabClick);

  } else if (isDesktop) {
    desktopTabs();
  }
});

//check for the orientation event and bind accordingly
window.addEventListener("orientationchange", function() {
  if (isMobileLandscapeOnly.matches || isTabletLandscapeOnly.matches) {
    desktopTabs();
    $('#tab_description h6').on("click, touchstart", tabClick);

  } else if (isMobilePortraitOnly.matches || isTabletPortraitOnly.matches) {
    mobileTabs();
    $('#tab_description h6').on("click, touchstart", tabClick);

  } else if (isDesktop) {
    desktopTabs();
  }
}, false);

if (isMobileLandscapeOnly.matches || isTabletLandscapeOnly.matches) {
  //alert("Mobile / Tablet (Portrait)");
  desktopTabs();
  $('#tab_description h6').on("click, touchstart", tabClick);

  //console.log(originalTabs);
} else if (isMobilePortraitOnly.matches || isTabletPortraitOnly.matches) {
  //alert("Mobile / Tablet (Portrait)");
  mobileTabs();
  $('#tab_description h6').on("click, touchstart", tabClick);

} else if (isDesktop) {
  //alert("Desktop");
  desktopTabs();
}

});

3 个答案:

答案 0 :(得分:0)

您正在使用一个应该是int的courseInput检查String值的equals条件。

此外,对于if条件中发生的任何情况,您将返回-1。如果key的值不等于列表中的值,你应该返回-1吗?

此外,courseInput变量是方法的本地变量。通过在类中将其声明为成员变量来使其成为全局变量。

答案 1 :(得分:0)

你有double courseInput = input.nextDouble(),它只接受双打,而不是字符。你还有int[] list,它是一个整数数组,所以它也不能容纳字符。如果将整个课程名称(字母和数字)放入字符串中,您将获得更好的运气。然后,您可以扫描整行并将其存储在一个字符串数组中。

答案 2 :(得分:0)

我建议您在尝试之前对Java的基本数据类型做一些更多的工作。 Java是一种相当strictly typed的语言,这意味着一般情况下(有很多例外),您需要提前确定变量中存储的值的类型。您在代码中混合了许多类型:整数,双精度和字符串。

首先,确定课程的标识符是否是一个名称的编号。如果它是一个数字,您可以使用int来存储它。如果它是一个名称,您可以使用String。您注意到主题包括字母和数字。但只要您不需要直接比较数字,就可以将整个标识符存储在String中。没有必要拆分它们。

新启动器的另一个常见陷阱是原始类型(例如int)的行为与对象(例如String)完全不同。直接的区别在于==的含义。对于基本类型,它比较值,而对于对象,它检查左侧和右侧是否指向同一对象。

我怀疑您希望通过名称识别您的主题(即String)。在这种情况下,您的代码可能类似于:

String[] subjects = {"COP2800", "PSY1012", "EVR2001"};

for (int i = 0; i < subjects.length; i++) {
    if (subjects[i].equals(name))
        return i;
}
return -1;