2014-02-08 24 views
0
public class control { 
    public static void main(String[] args) throws java.io.IOException { 

     int num[] = {1,2,3,4,5,6,7,8,9}; 
     char choice; 

     System.out.println("Enter your number in the array: "); 
     choice = (char) System.in.read(); 
     for(int x: num) { 
      if(x==choice) 
      { 
       System.out.println("Found"); 
       break; 
      } 
      else 
       System.out.println("Not found"); 
     } 
    } 
} 
+4

你正在比較'char'和'int'! – devnull

+0

我想也許是因爲你比較char值到一個int, – DevZer0

+2

雖然比較'char'和'int'字符在[Unicode表格](http://unicode-table.com/en/)中返回它的位置,所以char' '1'等於'49'整數。 – Pshemo

回答

2

這不是如何獲得用戶輸入。而是使用掃描儀對象。

例如,

Scanner scanner = new Scanner(System.in); 
char c = scanner.nextLine().charAt(0); 

// or 
int i = scanner.nextInt(); 
4

if(x==choice)用的選擇,其中選擇是字符進行比較X。從輸入 閱讀INT這樣的:

Scanner in = new Scanner(System.in); 
int choice = in.nextInt(); 
1

您需要附加Scanner正確接收來自用戶的輸入。另外,最好的做法是比較類型(intint,doubledouble等),所以如果別人查看代碼,他們可以更清楚地理解正在發生的事情。

import java.util.Scanner; 

public class control { 
    public static void main(String[] args) throws java.io.IOException { 

     Scanner input = new Scanner(System.in); // <-- add this line 
     int num[] = {1,2,3,4,5,6,7,8,9}; 
     int choice = input.nextInt(); //<-- this is the code you should use instead 
     for(int x: num){ 
      if(x==choice) 
      { 
       System.out.println("Found"); 
       break; 
      } 
      else 
       System.out.println("Not found"); 
     } 
    } 
} 

此外,你的代碼是當前設置打印出「未找到」每次經過每個索引時choice != num[x]時間。我不確定這是否是預期的操作,所以我將單獨留下該代碼(我相信另一個答案會在他們的答案中解決該問題)。

2

之前沒有人提到這一點,但這樣的:

for(int x: num) { 
    if(x==choice) 
    { 
     System.out.println("Found"); 
     break; 
    } 
    else 
     System.out.println("Not found"); 
} 

看suspicoius,因爲即使元素數組中,在將打印Not found幾次,可以考慮改爲:

boolean found = false; 
for(int x: num) { 
    if(x==choice) 
    { 
     System.out.println("Found"); 
     found = true; 
     break; 
    } 
} 
if(!found) { 
    System.out.println("Not found"); 
} 
相關問題