解码输入的字符串或字母

时间:2016-11-29 18:18:10

标签: java

我有这个程序,我从文本文件中读取数据,每行中的数据用“,”分隔。意味着逗号的左侧有字母,逗号的右侧有它的值。我想输入一个字母表,并希望我的程序给我它的数字值,它位于文件中逗号的右侧。 但不知何故,程序没有给出任何输出,虽然我也尝试了其他条件,但它在条件下落入。请有人帮助我。

import java.io.*;
import java.util.*;
public class Decoding_message_tom1{

     public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new FileReader("I:\\Programming\\Java Tutorials\\sample.txt"));

        // creating Link List 
        LinkedList<Decoding_node_tom1> list1 = new LinkedList<Decoding_node_tom1>();

        // checking if line is not empty         
        String line;
        while ((line = br.readLine()) != null)
         {
            // splitting the line with delimiter and storing in an array. 
             String data[] = line.split(",");

             // Object creation for passing the values in constructor of Decoding_node_tom1 class.
            Decoding_node_tom1 obj1 = new Decoding_node_tom1(data[0], data[1]);

           // inserting data as data[0] and data[1] in LinkedList object.
             list1.add(obj1);
         }

         // scanner class to scan what user has input
         Scanner scn = new Scanner(System.in);

         System.out.println("Enter Your encoded message.....");

        // Storing entered Input from user in str1 variable
         String str1 = scn.nextLine();

         // Iterating through list1
         Iterator itr = list1.iterator();


         // This will run until we have next values in iterator.
         while(itr.hasNext())
         {
             Decoding_node_tom1 var = (Decoding_node_tom1)itr.next();

             // Checking if the value entered is equal to values in sample.txt file
             if(var.encode_value == str1)
             {
                 System.out.println("Decode value for " + var.encode_value + " is " + var.decode_value);
             }
             else
             {
                 System.out.println("Entered Encode value is Invalid.... ");
                 System.exit(0);
             }
         }

     }
}



public class Decoding_node_tom1 {

    String encode_value;
    String decode_value;

    // Constructor of the above class for assigning the values during the time of object creation.
    Decoding_node_tom1(String encode_value, String decode_value)
    {
        this.encode_value = encode_value;
        this.decode_value = decode_value;
    }
}

1 个答案:

答案 0 :(得分:1)

你的问题是在以下情况:

00

应该是

 if(var.encode_value == str1)

原因是读取stdin时创建的字符串实例与解析文件时创建的字符串实例不同:两个具有相同值的不同对象。 if(var.encode_value.equals(str1)) 运算符比较对象标识,即检查两个变量是否引用同一对象实例。 ==函数检查对象相等,即&#34;值&#34;两个变量指向的两个对象是相同的。请注意,身份意味着相等,但事实恰恰相反。