2014-12-12 3 views
-2

다른 하나는 사용자가 보낸 텍스트 파일에서 하나씩 두 개의 문자열 배열이 있습니다. 분할 방식으로 분할했습니다. 그리고 저는 그것들을 하나씩 비교하고 싶습니다. 즉, split [0], split [1], split [2] ...로 Userword [0]을 split [0], split [1], split [2] ..., Userword [1] 텍스트 파일에는 모든 단어가 고유 한 값을 가지고 있습니다. 여기 내 코드가Java에서 문자열 배열 비교

import java.io.*; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.Scanner; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
public class Ai2 { 

    private static Scanner scan = new Scanner(System.in); 
    private static List<Ai2> list = new ArrayList<Ai2>(); 
    private static String[] split; 
    private static String[] Userword; 

    private static double number1; 
    private static double number2; 
    private static double number3; 
    private static double multPos = 0; 
    private static double multNeg = 0; 

    public static void main(String[] args) { 

     String sentence = null; 
     System.out.println("\nEnter a sentence please"); 
     sentence = scan.nextLine(); 

     try { 
      BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Alparslan\\Desktop\\words.txt")); 
      String txt = " "; 
      String msg = " "; 
      while((msg = br.readLine()) != null){ 
       txt += msg; 
      }//words in the text is taken to txt variable in this area. 

      for(int i=0; i<sentence.length(); i++){ 
       split = txt.split(" "); 
       // Sentence boşluğa göre ayrılıyor ve split adındaki diziye 
       // başarıyla aktarılıyor. kontrol için alttaki yazlılabilir. 
       //System.out.println(Arrays.toString(split)); 
      } 
      for(int i=0; i<sentence.length(); i++){ 
       Userword = sentence.split(" "); 
       // Sentence boşluğa göre ayrılıyor ve split adındaki diziye 
       // başarıyla aktarılıyor. kontrol için alttaki yazlılabilir. 
       //System.out.println(Arrays.toString(Userword)); 
      } 
      for (int i =0; i<sentence.length(); i++) { 
       for(int j=0; j<sentence.length(); i++){ 

        if(Userword[i].equals(split[j])){ 
        multPos *= 0.6*Double.parseDouble(split[i+1]); 
        multNeg *= 0.4*Double.parseDouble(split[i+2]); 
       } 
       }//internal for 
      }//external for 

      if(multPos>multNeg){ 
       System.out.println("The Sentence is positive" + multPos); 
      }else{ 
       System.out.println("The Sentence is negative" + multNeg); 
      } 

      br.close(); 
     } catch (IOException ex) { 
      Logger.getLogger(Ai2.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     } 
} 

편집 : 삭제 된 문자열 [] s 그래서 나는 이것을 미안하다. 나는 이런 식으로 쓰기하지만 난는 ArrayIndexOutOfBoundsException 수 : 2 오류가

+2

무엇이 작동하지 않습니까? 무슨 오류있어? 너 뭐 해봤 니? –

+0

원하는 배열에 값을 부여하는 대신 새 배열을 만듭니다. – MihaiC

+0

왜 그렇게 긴장됩니까? 모두가 때로는 잘못된 일을 할 수 있습니다. 나는 내 코드를 써서 내가 원하는 것을 쓴다. 여기에 적어두면 '전문가'가이 코드가 작동하지 않는다는 것을 알아야합니다. 당신이 정말로 전문가라면 정확하게 작동하지 않는 곳을 알고 있습니다. – Alp

답변

-1

당신이 이런 식으로 작업을 수행 할 수 있습니다

for(int i=0; i<Userwords.length;i++){ 
      for(j=0; j<split.length;j++){ 
       if(Userwords[i].equals(split[j]){ 
        //THEY COMPARE TO EACH OTHER RETURN SOMETHING 
       } 

      } 

     } 

그것의 의사 코드 예제 편집을 할

: 당신보다 이런 식으로 뭔가를 할 수 있습니다 :

  for(int i=0; i<Userwords.length;i++){ 
       for(j=0; j<split.length;j++){ 
       try{ 
        if(Userwords[i].equals(split[j]){ 
         //THEY COMPARE TO EACH OTHER RETURN SOMETHING 
        } 
       }catch(Exception ex){} 
       } 

      } 
+1

답변을 주셔서 감사합니다.하지만 이미 시도해 보았습니다. 이런 식으로 시도했을 때 널 포인트 예외가 발생합니다. 사용 된 배열은 꽉 찼습니다. in for 루프에서 System.out.println을 작성할 때 전체 배열을 볼 수 있습니다. – Alp

+0

try catch 구문을 추가하는 것보다 많습니다. 배열의 모든 상자가 채워지지 않을 수도 있습니다! –

+0

@ AlparslanDevelioğlu 내 대답에 편집 된 코드를 추가하십시오 –