我在使用BufferedReader时遇到了麻烦。我能够在Python上实现这一点,但Java对我来说非常困惑。 BTW这是Android Studio上的一项活动。最终的计划是根据给定的值计算长度,并在使用滚动时跟踪长度,但是,我不确定除了使用文本文件之外是否存在更有效的方法来保存数据。如果是这样,请告诉我。
我有的东西:
rollID.txt,rollType.txt,rollWidth.txt,rollWeight.txt,rollLenght.txt和显然addRoll.java
逻辑:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_roll);
TextView rollId = findViewById(R.id.rollid);
}
如果这很令人困惑,我很抱歉,但我很乐意回答您对该应用程序的任何疑问。
这就是Activity的样子:
这将是一个基于java控制台的程序,您将获得下一个rollnumber并基于其他输入输入将相应地写入文件,让我知道这是否是您想要的。 P.S这适用于java 7及更高版本
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Scanner;
public class Test {
public static int lineNumber = 0;
public static void main(String[] args) {
try {
File rootFolder = new File("C:\\Test");//Location for all Text files
//Get nextId (default 001)
int rolNumber = getDataFromRollIDTxt();
lineNumber = rolNumber-1;
String rollNumber = String.format("%04d",rolNumber); //Adding leading zeros
System.out.println("Next generated RollNumber %03d :: "+rollNumber);
Scanner scanner = new Scanner(System.in);
//For RollType
System.out.print("Enter your RollType (309/321):: ");
String type = scanner.nextLine();
System.out.println(type);
//For RollWidth
System.out.print("Enter your rollWidth:: ");
String width = scanner.nextLine();
System.out.println(width);
//For RollWeight
System.out.print("Enter your rollWeight:: ");
String weight = scanner.nextLine();
System.out.println(weight);
//Saving Data to respective files at corresponding lineNumbers
for (File file : rootFolder.listFiles()) {
Path path = Paths.get(file.getAbsolutePath());
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
if(file.getAbsolutePath().contains("ID")) {
lines.add(lineNumber, rollNumber);
} else if(file.getAbsolutePath().contains("Weight")) {
lines.add(lineNumber, weight);
} else if(file.getAbsolutePath().contains("Type")) {
lines.add(lineNumber, type);
} else if(file.getAbsolutePath().contains("Width")) {
lines.add(lineNumber, width);
} else if(file.getAbsolutePath().contains("Height")) {
long height = Integer.parseInt(width)/Integer.parseInt(weight)+Integer.parseInt(type); //Random calcultaions
lines.add(lineNumber, height+"");
}
Files.write(path, lines, StandardCharsets.UTF_8);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Integer getDataFromRollIDTxt() throws IOException {
String text = "";
try {
text = new String(Files.readAllBytes(Paths.get("C:\\Test\\rollId.txt")));
if(!text.isEmpty()) {
String[] arr = text.split("[\\r\\n]+"); //To get all rollnumbers in Array
Integer lastId = Integer.parseInt(arr[arr.length-1]);
return ++lastId;
}
else {
return 1;
}
}
catch (IOException e) {
e.printStackTrace();
throw e;
}
}
}