0
我對我的java類有一個問題,我必須解析多個.txt文件並提取數學問題的字符串,並將字符串中的答案與問題的實際答案進行比較。我已經能夠閱讀和檢查兩個單位數字的問題,但我無法通過這個。我必須能夠檢查最多4個任意長度的數字和6個小數位的小數(0.000001)。 我也不能在這段代碼中使用正則表達式或數組。從一個字符串中解析多個數字Java
這是到目前爲止我的代碼:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Scanner;
import javax.print.attribute.standard.NumberOfDocuments;
public class CheckAnswers
{
private static double correct = 0;
private static double numQuestions = 0;
public static void Test(Object newline) throws IOException, ParseException
{
while (((Scanner) newline).hasNext())
{
String line = ((Scanner) newline).nextLine();
// String line = "8 - 5 = 3";
//
String num1 = line.substring(0, 1);
double firstNum = Integer.parseInt(num1);
//double firstNum = NumberFormat.getInstance().parse(num1).intValue();
String num2 = line.substring(4, 5);
double secondNum = NumberFormat.getInstance().parse(num2).intValue();
String answer = line.substring(8, 9);
double userAnswer = NumberFormat.getInstance().parse(answer).intValue();
int loopExit = 0;
while (loopExit == 0)
{
int checkSubtraction = line.indexOf('-');
if (checkSubtraction != -1)
{
loopExit++;
Subtraction(line, firstNum, secondNum, userAnswer);
}
int checkAddition = line.indexOf('+');
if (checkAddition != -1)
{
loopExit++;
Addition(line, firstNum, secondNum, userAnswer);
}
int checkDivision = line.indexOf('/');
if (checkDivision != -1)
{
loopExit++;
Division(line, firstNum, secondNum, userAnswer);
}
int checkMultiplication = line.indexOf('*');
if (checkMultiplication != -1)
{
loopExit++;
Multiplication(line, firstNum, secondNum, userAnswer);
}
}
numQuestions++;
}
System.out.println("Number correct: " + correct + " out of " + numQuestions);
double percentGrade = ((correct * 100)/numQuestions);
System.out.println("Grade: " + percentGrade + "%");
}
public static void Subtraction(String line, double firstNum, double secondNum,
double userAnswer) throws ParseException
{
double keyNum = firstNum - secondNum;
if (userAnswer == keyNum)
{
System.out.println("Correct");
correct++;
}
if (userAnswer != keyNum)
{
System.out.println("Wrong");
}
}
public static void Addition(String line, double firstNum, double secondNum,
double userAnswer) throws ParseException
{
double keyNum = firstNum + secondNum;
if (userAnswer == keyNum)
{
System.out.println("Correct");
correct++;
}
if (userAnswer != keyNum)
{
System.out.println("Wrong");
}
}
public static void Multiplication(String line, double firstNum, double secondNum,
double userAnswer) throws ParseException
{
double keyNum = firstNum * secondNum;
if (userAnswer == keyNum)
{
System.out.println("Correct");
correct++;
}
if (userAnswer != keyNum)
{
System.out.println("Wrong");
}
}
public static void Division(String line, double firstNum, double secondNum,
double userAnswer) throws ParseException
{
double keyNum = firstNum/secondNum;
if (userAnswer == keyNum)
{
System.out.println("Correct");
correct++;
}
if (userAnswer != keyNum)
{
System.out.println("Wrong");
}
}
}
請提供樣本輸入和您想要的輸出。它會幫助我們更好地理解你的問題。 – Prateek
而且「不能通過」是什麼意思。你是否遇到異常?輸出無效?你不能使用'nextInt()'而不是從行中手動拉動字符? – chrylis
我建議你先將'Test(Object newline)'改爲'Test(Scanner newline)'並使用類似'Double num1 = newline.nextDouble(); String oper = newline.next(); Double num2 = newline.nextDouble(); Double answer = newline.nextDouble();' –