我有这个程序,我从文本文件中读取数据,每行中的数据用“,”分隔。意味着逗号的左侧有字母,逗号的右侧有它的值。我想输入一个字母表,并希望我的程序给我它的数字值,它位于文件中逗号的右侧。 但不知何故,程序没有给出任何输出,虽然我也尝试了其他条件,但它在条件下落入。请有人帮助我。
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;
}
}
答案 0 :(得分:1)
你的问题是在以下情况:
00
应该是
if(var.encode_value == str1)
原因是读取stdin时创建的字符串实例与解析文件时创建的字符串实例不同:两个具有相同值的不同对象。 if(var.encode_value.equals(str1))
运算符比较对象标识,即检查两个变量是否引用同一对象实例。 ==
函数检查对象相等,即&#34;值&#34;两个变量指向的两个对象是相同的。请注意,身份意味着相等,但事实恰恰相反。