这是我目前的代码:
public static String findPhoneNumber(Scanner input, String name) {
String[] arr;
while (input.hasNextLine()){
arr = name.split(DELIMITER);
input.nextLine();
for (int i=0;i<=arr.length;i++) {
if (arr[0].endsWith(name)) {
return (arr[3]);
}
else {
return("Nothing to return");
}
}
}
CSV.testFindPhoneNumber(arr[3]);
}
package com.company;
import java.io.IOException;
import java.net.URL;
import java.util.Scanner;
public class CSV {
public static final String CSV_FILE_URL = "https://orb.essex.ac.uk/ce/ce152/data/staff.csv";
public static void main(String[] args) throws IOException {
URL url = new URL(CSV_FILE_URL);
Scanner input = new Scanner(url.openConnection().getInputStream());
testFindPhoneNumber(input);
}
public static void testFindPhoneNumber(Scanner input){
System.out.println("### Testing findPhoneNumber");
for (String name : new String[]{"Kruschwitz", "Vickers", "Voelker"}){
String result = TestCSV.findPhoneNumber(input,name);
System.out.println("name= " + name + ", result= " + result);
}
}
}
我试图将excel文件(我的代码中包含的URL)拆分为3个元素数组,然后找到用公共类CSV编写的名称,以打印这些名称的相应电话号码。
不知道该怎么做。任何建议将不胜感激。
答案 0 :(得分:0)
您的代码有很多问题。让我们快速回顾最重要的事情:
public static String findPhoneNumber(Scanner input, String name) {
String[] arr;
错误的命名。什么是 arr 应该做什么?给它一个名字,告诉它应该是什么意思。
while (input.hasNextLine()){
arr = name.split(DELIMITER);
为什么要拆分名称?名称是进入方法的固定参数?!
input.nextLine();
您正在读取一行...但不存储该结果。换句话说:您阅读了整个输入,但不要处理任何。
可能你的意思是String line = input.nextLine()
;然后你的方法想要处理来自URL文件的line
。
for (int i=0;i<=arr.length;i++) {
if (arr[0].endsWith(name)) {
return (arr[3]);
}
else {
return("Nothing to return");
}
}
我不知道你想通过这种比较实现什么。然后:从不返回一些&#34;消息&#34;表示错误(对于返回字符串的方法)。该方法的调用者应该如何理解出错?
所以:不是返回消息,而是抛出异常或返回null。
最后:你完全是在为自己烦恼。不要尝试从远程URL读取CSV,在一步中拆分和处理所有输入。相反:首先编写只读取该URL的代码,然后打印数据。然后,当它运行良好时,编写单独的代码来执行&#34;匹配&#34;你想做普通的字符串输入。最后,把这些东西放在一起。
但再次:简单split(",")
不适用于任意CSV数据。 CSV要复杂得多。不要试图重新发明轮子;尤其是当你处于这样的初学者水平时。
答案 1 :(得分:0)
您的主要课程,即 CSV 对我来说很好。问题在于在主类中调用的方法 findPhoneNumber 。以下是它的修正版本。
ret <- as.list(rep(NA, length(MergedData))); ret[[i]]<-row
这是输出。
测试findPhoneNumber
name = Kruschwitz,结果= 5A.542
name = Vickers,result = 5A.528
name = Voelker,result = null