2014-10-31 50 views
0

在我的searchForANumber方法中,我试图显示在数组中是否存在数字。问题是,我正在使用和if, else来确定searchValue是否与我的for循环中的数组语句中的值相匹配,并且当我这样做时,数组中的最后一个变量会被测试,并且我的返回值仅基于最终的价值。我怎样才能让我的返回短语基于数组中的所有元素,而不仅仅是最后一个?我用一段时间,做,而开关循环?任何帮助表示赞赏。根据搜索词步进数组和返回数组中的匹配/非匹配值

import java.util.Scanner; 

public class Practice { 
public static void main(String[] args){ 
    Scanner input = new Scanner(System.in); 

    System.out.println("Enter your minimum number: "); 
    int minNumber = input.nextInt(); 

    System.out.println("Enter your maximum number: "); 
    int maxNumber = input.nextInt(); 

    int[] array = new int[(maxNumber-minNumber)+1]; 
    int[]readInArray = new int[maxNumber-minNumber+1]; 

    readInArray=readNumbers(minNumber, maxNumber, array); 

    printNumbers(readInArray, minNumber); 

    searchForANumber(readInArray, minNumber); 

    sumNumbers(readInArray); 

    printBackward(readInArray); 


}//end of main method 

private static void printBackward(int[] readInArray) { 
    for (int i=(readInArray.length-1);i>0;i--){ 
     System.out.print(readInArray[i] + " "); 
    } 

} 

private static void sumNumbers(int[] readInArray) { 
    int total = 0; 
    for (int i=0;i<readInArray.length;i++){ 

     total = total + readInArray[i]; 
    } 
    System.out.println(total); 

} 

private static void searchForANumber(int[] readInArray, int minNumber) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter number to search for: "); 
    int searchValue = input.nextInt(); 
    boolean returnValue = false; 
    for (int i = 0; i < readInArray.length;i++) { 
     if (searchValue == readInArray[i]) 
      returnValue=true; 
      break; 

    }// end of for 
    System.out.println(returnValue); 

} 

private static void printNumbers(int[] readInArray, int minNumber) { 
    for (int i = 0; i < readInArray.length;i++) { 
     System.out.print(readInArray[i] + " "); 
     minNumber++; 
    } 
    System.out.println(" "); 

} 

private static int[] readNumbers(int minNumber, int maxNumber, int[] array) { 
    for (int i = 0; i < array.length;i++) {// input grades for each students 
     array[i]=minNumber; 
     minNumber++; 
    } // end of for loop 

    return array; 
} // end of readArray method 

}//end of class 
+0

为什么不返回'boolean'? – Tetramputechture 2014-10-31 02:36:36

+0

你能发布你的searchForANumber(...)方法吗? – mattforni 2014-10-31 02:40:26

+0

已发布,您只需要向下滚动 – user3692506 2014-10-31 02:41:07

回答

0

你可以通过两种方式做到这一点。

  1. 使您的方法searchForANumber返回布尔值。

    private static boolean searchForANumber(int[] readInArray, int minNumber) { 
    //before for loop 
    for (int i = 0; i < readInArray.length;i++) { 
        if (searchValue == readInArray[i]) 
         return true; 
        } 
    return false; 
    } 
    
  2. 使用breakboolean

    private static void searchForANumber(int[] readInArray, int minNumber) { 
    //before for loop 
    boolean found = false; 
    for (int i = 0; i < readInArray.length;i++) { 
        if (searchValue == readInArray[i]){ 
         found = true; 
         break; 
         } 
        } 
    if(found) 
    System.out.println("Found"); 
    else 
    System.out.println("Not Found"); 
    }