Java 从用户输入的字符串和字符串[][]的第一列检索匹配项
数组存储了所有的信息,我觉得这个程序非常接近工作状态。我知道它不整洁,我会马上打扫的!问题在最底层Java 从用户输入的字符串和字符串[][]的第一列检索匹配项,java,arrays,csv,Java,Arrays,Csv,数组存储了所有的信息,我觉得这个程序非常接近工作状态。我知道它不整洁,我会马上打扫的!问题在最底层 public class FoodFacts { private static BufferedReader textIn; private static BufferedReader foodFacts; static int numberOfLines = 0; static int NUM_COL = 7;
public class FoodFacts
{
private static BufferedReader textIn;
private static BufferedReader foodFacts;
static int numberOfLines = 0;
static int NUM_COL = 7;
static int NUM_ROW = 961;
static String [][] foodArray = new String[NUM_ROW][NUM_COL];
public static String fact;
// Make a random number to pull a line
static Random r = new Random();
public static void main(String[] args)
{
try
{
textIn = new BufferedReader(new InputStreamReader(System.in));
foodFacts= new BufferedReader(new FileReader("foodfacts.csv"));
Scanner factFile = new Scanner(foodFacts);
List<String> facts = new ArrayList<String>();
// System.out.println("Printing out your array!");
while ( factFile.hasNextLine()){
fact = factFile.nextLine();
StringTokenizer st2 = new StringTokenizer(fact, ",") ;
while (st2.hasMoreElements()){
for ( int j = 0; j < NUM_COL ; j++) {
foodArray [numberOfLines][j]= st2.nextToken();
//System.out.println("Foodarray at " + " " + numberOfLines + " is " +foodArray[numberOfLines][j]);
}
}
numberOfLines++;
}
System.out.println("Please type in the food you wish to know about.");
String request; //user input
request = textIn.readLine();
System.out.println ("You requested" + request);
公共类FoodFacts
{
私有静态缓冲阅读器文本输入;
私有静态缓冲区读取程序foodFacts;
静态int numberOfLines=0;
静态int NUM_COL=7;
静态整数行=961;
静态字符串[][]foodArray=新字符串[NUM_ROW][NUM_COL];
公共静态字符串事实;
//做一个随机数来拉一条线
静态随机r=新随机();
公共静态void main(字符串[]args)
{
尝试
{
textIn=新的BufferedReader(新的InputStreamReader(System.in));
foodFacts=newbufferedreader(新文件阅读器(“foodFacts.csv”);
扫描仪factFile=新扫描仪(foodFacts);
列表事实=新的ArrayList();
//System.out.println(“打印出您的数组!”);
while(factFile.hasNextLine()){
fact=factFile.nextLine();
StringTokenizer st2=新的StringTokenizer(事实,“,”);
while(st2.hasMoreElements()){
对于(int j=0;j
问题从这里开始
for ( int i = 0; i < NUM_ROW ; i++)
{
if ( foodArray[i][0] == request)
for ( int j = 0 ; j < NUM_COL ; j++ )
System.out.println ( foodArray[i][j] ); //never prints anything
}
}
catch (IOException e)
{
System.out.println ("Error, problem reading text file!");
e.printStackTrace();
}
}
}
for(int i=0;i
我试图在终端中测试它,其中foodArray[6][0]应该与上次
for
循环中的input All Bran Score匹配,您正在使用=
if构造中的=
运算符比较字符串,这会给您错误的结果,因为=
比较字符串引用,这将是不同的,因为两个引用都指向不同的字符串对象
使用equals
方法比较字符串内容:-
if (foodArray[i][0].equals(request))
如果要比较任何对象的内容
,应始终使用equals
方法
查看此帖子:-了解更多详细信息