【问题标题】:Comparing String arrays in Java比较Java中的字符串数组
【发布时间】:2014-12-12 13:11:35
【问题描述】:

我有两个字符串数组,一个来自文本文件,另一个来自用户。我用拆分方法拆分它们。我想一一比较。换句话说,将 Userword[0] 与 split[0]、split[1]、split[2]...、Userword[1] 与 split[0]、split[1]、split[2]... 进行比较文本文件中的每个单词都有自己的乘积值。这是我的代码

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);
        }
      } 
}

编辑:我删除了 String[] ,所以我没有创建新数组,对此感到抱歉。我用这种方式写,但我得到 ArrayIndexOutOfBoundsException: 2 error

【问题讨论】:

  • 什么不起作用?你得到什么错误?你试过什么?
  • 您正在创建新数组,而不是为您想要的数组赋值
  • 你为什么这么紧张。每个人有时都会做错事。我写我的代码我写我想要的。如果我在这里写它们,您应该知道“专业人士”此代码不起作用。如果你真的是专业人士,你就会知道哪里出了问题

标签: java arrays text split


【解决方案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){}
              }

            }

【讨论】:

  • 感谢您的回答,但我已经尝试过了。当我以这种方式尝试时,我得到了空点异常。但使用的数组已满。当我写 System.out.println 时,在 for 循环中我可以看到完整的数组。
  • 比在那里添加一个try catch语句,也许不是数组的每个盒子都被填满了!
  • @AlparslanDevelioğlu 我在我的答案中添加了一些编辑过的代码
  • @AlparslanDevelioğlu 请投票给我的 cmets 和我的回答 ;) 感谢您的支持
猜你喜欢
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 2012-02-14
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多