Java 如何计算从txt文件获得的值?
因此,我试图读取results.txt文件中的值,并根据CGPA格式进行计算,但我尝试的方法似乎不起作用。我想知道是否有人可以帮我这是我的客户机服务器分配。计算部分位于View()方法下。PS抱歉,如果我的代码太难阅读,而且我还不熟悉使用java,这是我第一次在这里发布Java 如何计算从txt文件获得的值?,java,arrays,Java,Arrays,因此,我试图读取results.txt文件中的值,并根据CGPA格式进行计算,但我尝试的方法似乎不起作用。我想知道是否有人可以帮我这是我的客户机服务器分配。计算部分位于View()方法下。PS抱歉,如果我的代码太难阅读,而且我还不熟悉使用java,这是我第一次在这里发布 import java.net.*; import java.io.*; import java.lang.*; public class MultiClientHandler1 extends Thread { priv
import java.net.*;
import java.io.*;
import java.lang.*;
public class MultiClientHandler1 extends Thread {
private Socket client;
private BufferedReader in, in2,in3;
private PrintWriter out, out2;
private String received, data,result;
private String array[], array2[], array3[],array4[];
private int found=0;
public MultiClientHandler1(Socket socket) {
client = socket;
try {
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
out2 = new PrintWriter(new FileWriter("students.txt", true));
} catch(IOException e) {
e.printStackTrace();
}
}
public void Register() {
String reply="";
array = received.split(":");
if(array[1].length() != 7)
reply = "Err1";
else if(array[2].length() < 5)
reply = "Err2";
else if(array[3].length() < 5)
reply = "Err3";
else {
reply= "+OK";
out2.println(array[1]+":"+array[2]+":"+array[3]);
out2.close();
}
out.println(reply);
}
public void login() throws IOException {
in2 = new BufferedReader(new FileReader("students.txt"));
while((data = in2.readLine()) != null) {
array3=data.split(":");
if((array2[1].equals(array3[0])) && (array2[2].equals(array3[1]))) {
out.println("Login successfully");
found=1;
break;
}
}
if(found==0)
out.println("Login Error");
}
public void View() throws IOException {
String grade = "", cgpa = "";
int IntValue = 0, IntCH = 0, IntCGPA = 0, IntArray = 0;
in3 = new BufferedReader(new FileReader("results.txt"));
while((result = in3.readLine()) != null) {
array4=result.split(":");
if((array2[1].equals(array4[0])) && (array2[2].equals(array4[1]))) {
grade += array4[2] + " " + array4[3] + " " + array4[4] + "...........";
found = 1;
if(array4[3] == "A") {
IntArray = Integer.parseInt(array4[3]);
IntValue = IntArray * 4;
} else if(array4[3] == "B") {
IntArray = Integer.parseInt(array4[3]);
IntValue = IntArray * 3;
}
IntCH += IntArray;
IntCGPA = IntValue/IntCH;
out.println(IntCGPA);
}
if(found==0)
out.println("No Records");
}
out.println(grade);
}
public void run() {
try {
do {
found=0;
received = in.readLine();
array2=received.split(":");
if (received.equals("QUIT")) break;
switch(received.charAt(0)) {
case 'R':
Register();
break;
case 'L':
login();
break;
case 'V':
View();
break;
}
} while (!received.equals("QUIT"));
} catch(IOException e) {
e.printStackTrace();
} finally {
try {
if(client != null) {
System.out.println("Closing down connection...");
client.close();
}
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
these are the content in the results.txt file
0118210:1801:XDCS1094:A:4
0118210:1801:XDCS2034:B+:4
0118210:1801:XDCS1043:C:3
0118024:1801:XDCS1094:B:4
0118024:1801:XDCS2094:A:4
import java.net.*;
导入java.io.*;
导入java.lang.*;
公共类MultiClientHandler1扩展线程{
专用套接字客户端;
专用缓冲区读取器in、in2、in3;
私人打印输出,输出2;
接收到私有字符串、数据、结果;
私有字符串数组[],array2[],array3[],array4[];
找到的私有int=0;
公共多客户机DLER1(套接字){
客户端=套接字;
试一试{
in=new BufferedReader(新的InputStreamReader(client.getInputStream());
out=新的PrintWriter(client.getOutputStream(),true);
out2=新的PrintWriter(新的FileWriter(“students.txt”,true));
}捕获(IOE异常){
e、 printStackTrace();
}
}
公开作废登记册(){
字符串reply=“”;
数组=已接收。拆分(“:”);
if(数组[1]。长度()!=7)
答复=“Err1”;
else if(数组[2].length()<5)
答复=“Err2”;
else if(数组[3].length()<5)
答复=“Err3”;
否则{
答复=“确定”;
out2.println(数组[1]+“:”+数组[2]+“:”+数组[3]);
out2.close();
}
out.println(回复);
}
public void login()引发IOException{
in2=新的BufferedReader(新的文件阅读器(“students.txt”);
而((data=in2.readLine())!=null){
array3=data.split(“:”);
如果((array2[1].equals(array3[0])和&(array2[2].equals(array3[1])){
out.println(“登录成功”);
发现=1;
打破
}
}
如果(找到==0)
out.println(“登录错误”);
}
public void View()引发IOException{
字符串级别=”,cgpa=”;
int IntValue=0,IntCH=0,IntCGPA=0,IntArray=0;
in3=新的BufferedReader(新的文件阅读器(“results.txt”);
而((result=in3.readLine())!=null){
array4=结果。拆分(“:”);
如果((array2[1].equals(array4[0])和&(array2[2].equals(array4[1])){
等级+=阵列4[2]+“”+array4[3]+“”+array4[4]+”;
发现=1;
如果(数组4[3]=“A”){
IntArray=Integer.parseInt(array4[3]);
IntValue=IntArray*4;
}否则如果(数组4[3]=“B”){
IntArray=Integer.parseInt(array4[3]);
IntValue=IntArray*3;
}
IntCH+=IntArray;
IntCGPA=IntValue/IntCH;
out.println(IntCGPA);
}
如果(找到==0)
out.println(“无记录”);
}
out.println(年级);
}
公开募捐{
试一试{
做{
发现=0;
received=in.readLine();
array2=已接收。拆分(“:”);
如果(接收等于(“退出”))中断;
开关(接收到字符(0)){
案例“R”:
寄存器();
打破
案例“L”:
登录();
打破
案例“V”:
视图();
打破
}
}而(!received.equals(“QUIT”));
}捕获(IOE异常){
e、 printStackTrace();
}最后{
试一试{
如果(客户端!=null){
System.out.println(“关闭连接…”);
client.close();
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}
这些是results.txt文件中的内容
0118210:1801:XDCS1094:A:4
0118210:1801:XDCS2034:B+:4
0118210:1801:XDCS1043:C:3
0118024:1801:XDCS1094:B:4
0118024:1801:XDCS2094:A:4
您的代码以何种方式不起作用?寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:当我尝试运行程序并键入V:018210:1801时,它应该显示来自results.txt文件的结果,并根据结果计算CGPA,但它显示为null