在我的黑客马拉松回合中,我被要求解决一个问题,该问题是从服务器读取.txt文件,然后构建逻辑以读取该文件并从该文件中给出的所有击球手中打印得分最高的得分手。
txt文件名为cricket.txt,看起来像这样。
Rohit Sharma|264
M.S Dhoni|198
Rahul Dravid|235*
像这样,每个球员的名字都在换行符中,他们希望我打印出击球手中得分最高的球员,而不打印出击球手中得分最高的球员。
击球手得分手的得分不要以星标加上得分为准。
O / P格式:
Rohit Sharma|264
Rahul Dravid|235*
你们能帮忙解决这个问题吗,我已经尝试过以某种方式获取bt FOrmat异常的bt。
注意:不允许使用Socket读取文件。 (请使用Java执行以下操作)
我的代码如下(给我编号格式异常)。
public static void main(String[] args) throws IOException {
URL url = new URL("192.168.1.3:8003/cricket.txt");
String data = new Scanner( url.openStream() ).useDelimiter("\\A").next();
int temp = 0;
for(int i=0; i<spData.length; i++) {
String[] ns = spData[i].split("\\|");
int temp1 = Integer.parseInt(ns[1]);
if(temp < temp1) {
temp = temp1;
}
}
System.out.println("Highest score is"+temp);
}
我得到如下异常
Exception in thread "main" java.lang.NumberFormatException: For input string: "264
"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at interview.CricketScore.main(CricketScore.java:27)
然后我尝试这样做以纠正实际问题
public static void main(String[] args) throws IOException {
String s = "Rohit Sharma|264";
String[] spS = s.split("\\|");
int j = 0;
j = Integer.parseInt(spS[1]);
System.out.println(j);
}
但是在这里我得到了正确的输出。为什么?我在那边也做了什么?我正在接受异常。
答案 0 :(得分:0)
我得到的答案代码如下:
package interview;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class CricketScore {
public static void main(String[] args) throws IOException {
URL url = new URL("192.168.1.3:8003/cricket.txt");
String data = new Scanner( url.openStream() ).useDelimiter("\\A").next();
int out = 0;
String outName = "";
int nOut = 0;
String nOutName = "";
//System.out.println(data);
String[] spData = data.split("\r");
for(int i=0; i<spData.length; i++) {
String[] ns = spData[i].split("\\|");
if(ns[1].contains("*")==false) {
int temp1 = Integer.parseInt(ns[1]);
if(out < temp1) {
out = temp1;
outName = ns[0];
}
}
}
for(int i=0; i<spData.length; i++) {
String[] ns = spData[i].split("\\|");
if(ns[1].contains("*")) {
String temp1 = ns[1].replace("*", "");
int temp2 = Integer.parseInt(temp1);
if(nOut < temp2) {
nOut = temp2;
nOutName = ns[0];
}
}
}
System.out.println("Highest scorer from the Out batsman is "+outName +"|"+out);
System.out.println("Highest scorer from the Not Out batsman is "+nOutName+"|"+nOut);
}
}