我正在研究一个java程序,但我坚持这个特定的部分。此函数假设将数组作为输入并返回输入数组中第一次出现的target的索引,如果未找到则返回-1。该函数假设调用我的contains方法。
含有()
public static boolean contains(int[] input, int target) {
for(int i = 0; i < input.length; i++){
if (target == input[i]){
return true;
}
}
return false;
}
的indexOf()
public static int indexOf(int[] input, int target) {
if(contains(input, target) == true){
return i;
}
return -1;
}
我试图返回我在contains方法中的变量,但是我不知道如何使变量i从contains方法转移到indexof方法而不使它成为构造函数中的public int。谢谢你的帮助。
---------- ---------- EDIT contains方法假设在给定数组中搜索目标值。如果目标值存在于数组中的某个位置,则返回true。如果没有,返回false。如果需要对contains方法进行任何更改,也可以这样做。
答案 0 :(得分:1)
indexOf
应该看起来很像contains
。事实上,他们应该从你拥有的东西中切换出来:
public static int indexOf(int[] input, int target) {
for(int i = 0; i < input.length; i++){
if (target == input[i]){
return i;
}
}
return -1;
}
public static boolean contains(int[] input, int target) {
if(indexOf(input, target) >= 0){
return true;
}
return false;
}
答案 1 :(得分:1)
你很有可能倒退了。要么你的导师在作业中写错了,要么你误读或误解了。
contains()方法使用indexOf()方法更有意义。这种方式应该很容易理解。
答案 2 :(得分:1)
唯一有意义的是使用contains()在indexOf()中执行检查,以确保变量存在。
public static boolean contains(int[] input, int target) {
for(int i = 0; i < input.length; i++){
if (target == input[i]){
return true;
}
}
return false;
}
public static int indexOf(int[] input, int target) {
//If the value isn't there, return -1
if(contains(input, target) == false){
return -1;
}
//Go find the value if we know it is in there
for(int i = 0; i < input.length; i++){
if (target == input[i]){
return i;
}
}
//We should never get here
return -1;
}
答案 3 :(得分:0)
另一种方法是将static
变量设置为等于目标索引。 code如下所示:
import java.util.*;
import java.lang.*;
import java.io.*;
class TargetSearch
{
private static int posOfTarget;
public static void main (String[] args) throws java.lang.Exception
{
int [] arr = {1,2,3,4,5,6};
int target = 5;
if(contains(arr,target)){
System.out.println(target+" found at pos " + getPosOfTarget()+1);
}
else
System.out.println(target+" doesn't exist in arr ");
}
public static boolean contains(int[] input, int target) {
for(int i = 0; i < input.length; i++){
if (target == input[i]){
setPosofTarget(i);
return true;
}
}
return false;
}
public static int indexOf(int[] input, int target) {
if(contains(input, target) == true){
//pos is already set in contains()
return (getPosOfTarget());
}
else
return -1;
}
//getter setter of pos
public static int getPosOfTarget(){
return posOfTarget;
};
public static void setPosofTarget(int i){
posOfTarget = i;
};
}