使用java将字符串数组打印到文本文件
我试图将用户输入的结果打印到一个简单的文本文件中,但我所做的一切都失败了。我尝试在开关盒中使用PrintWriter,但结果仍然为空。我对Java很陌生,所以可能我缺少了一些明显的信息? 代码如下:使用java将字符串数组打印到文本文件,java,arrays,string,text,printwriter,Java,Arrays,String,Text,Printwriter,我试图将用户输入的结果打印到一个简单的文本文件中,但我所做的一切都失败了。我尝试在开关盒中使用PrintWriter,但结果仍然为空。我对Java很陌生,所以可能我缺少了一些明显的信息? 代码如下: package parkingsystem; import java.io.*; import java.util.Scanner; public class Registration { static String [][] userData; static String [][
package parkingsystem;
import java.io.*;
import java.util.Scanner;
public class Registration {
static String [][] userData;
static String [][] fileData;
public static void Registration(){
Scanner input = new Scanner(System.in);
String lotNo;
String First;
String Last;
String studentID;
String phoneNo;
String email;
String carNo;
String dateReg;
String strcontent;
String proceed;
boolean proceed2 = true;
userData = new String [50][6];
fileData = new String [50][6];
int counter = 0;
int col;
int row;
boolean carry_on = true;
MainMenu choices = new MainMenu();
while(proceed2=true){
System.out.println("Press Y/y to add a new user");
System.out.println("Press N/n to return to menu");
proceed = input.nextLine();
switch (proceed) {
case "Y":
case "y":
System.out.println("Enter your student ID");
studentID = input.nextLine();
System.out.println("Enter your first name");
First = input.nextLine();
System.out.println("Enter your last name");
Last = input.nextLine();
System.out.println("Enter your car number");
carNo = input.nextLine();
System.out.println("Enter your contact number");
phoneNo = input.nextLine();
System.out.println("Enter your email address");
email = input.nextLine();
row = counter ;
userData [row][0] = studentID;
userData [row][1] = First;
userData [row][2] = Last;
userData [row][3] = carNo;
userData [row][4] = phoneNo;
userData [row][5] = email;
if (counter == 6){
carry_on=false;
}
proceed2 = false;
break;
case "N":
case "n":
choices.Menus();
break;
}
}
}
}
这里是重新分解代码的第二步
因此,在这次重构中,我们捕获并存储新创建的CarOwner对象,并将它们存储在一个列表中
然后,我们将了解如何遍历CarOwner的列表,然后将这些对象写入名为CarOwner.dat的文件
通常在工业上,,代码重分解是在拥有一组单元测试的环境中完成的,您可以根据这些测试确保重构没有破坏代码所需的行为,但我们只是在这里学习,所以这项工作可以解释您缺少的一些概念,下面的第一次迭代也有自己的一些问题,所以请不要这样做把这个作为最终产品
重构
package parkingsystem;
import java.io.Serializable;
public class CarOwner implements Serializable{
private String First;
private String Last;
private String studentID;
private String email;
private String carNo;
private String dateReg;
private String contactNumber;
public CarOwner() {
}
public String getFirst() {
return First;
}
public void setFirst(String first) {
First = first;
}
public String getLast() {
return Last;
}
public void setLast(String last) {
Last = last;
}
public String getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
this.studentID = studentID;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCarNo() {
return carNo;
}
public void setCarNo(String carNo) {
this.carNo = carNo;
}
public String getDateReg() {
return dateReg;
}
public void setDateReg(String dateReg) {
this.dateReg = dateReg;
}
public void setContactNumber(String contactNumber) {
this.contactNumber = contactNumber;
}
public String getContactNumber() {
return contactNumber;
}
@Override
public String toString() {
return "CarOwner{" +
"First='" + First + '\'' +
", Last='" + Last + '\'' +
", studentID='" + studentID + '\'' +
", email='" + email + '\'' +
", carNo='" + carNo + '\'' +
", dateReg='" + dateReg + '\'' +
", contactNumber='" + contactNumber + '\'' +
'}';
}
}
好了,创建CarOwner类是为了让代码更加面向对象
其次,重新分解的代码演示了在Java中正确使用布尔变量
正如其他评论员已经指出的,赋值运算符=很容易与布尔等式的测试混淆。请参阅
此外,我还将布尔继续;
重命名为布尔继续;
这是一种常见的策略。将布尔变量命名为一个“答案”为是或否或真或假的问题
这就意味着我们可以编写类似于的代码,而(canprocedure)
读起来非常容易。另请参阅
我希望这能有所帮助。这里是重新分解代码的第二步
因此,在这次重构中,我们捕获并存储新创建的CarOwner对象,并将它们存储在一个列表中
然后,我们将了解如何遍历CarOwner的列表,然后将这些对象写入名为CarOwner.dat的文件
通常,在行业中,代码重分解是在拥有一组单元测试的环境中完成的,您可以根据这些测试确保重构没有破坏代码所需的行为,但我们只是在这里学习,所以这项工作可以解释您缺少的一些概念,下面的第一次迭代有一些问题它自己的用途,所以不要把它作为最终产品
重构
package parkingsystem;
import java.io.Serializable;
public class CarOwner implements Serializable{
private String First;
private String Last;
private String studentID;
private String email;
private String carNo;
private String dateReg;
private String contactNumber;
public CarOwner() {
}
public String getFirst() {
return First;
}
public void setFirst(String first) {
First = first;
}
public String getLast() {
return Last;
}
public void setLast(String last) {
Last = last;
}
public String getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
this.studentID = studentID;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCarNo() {
return carNo;
}
public void setCarNo(String carNo) {
this.carNo = carNo;
}
public String getDateReg() {
return dateReg;
}
public void setDateReg(String dateReg) {
this.dateReg = dateReg;
}
public void setContactNumber(String contactNumber) {
this.contactNumber = contactNumber;
}
public String getContactNumber() {
return contactNumber;
}
@Override
public String toString() {
return "CarOwner{" +
"First='" + First + '\'' +
", Last='" + Last + '\'' +
", studentID='" + studentID + '\'' +
", email='" + email + '\'' +
", carNo='" + carNo + '\'' +
", dateReg='" + dateReg + '\'' +
", contactNumber='" + contactNumber + '\'' +
'}';
}
}
好了,创建CarOwner类是为了让代码更加面向对象
其次,重新分解的代码演示了在Java中正确使用布尔变量
正如其他评论员已经指出的,赋值运算符=很容易与布尔等式的测试混淆。请参阅
此外,我还将布尔继续;
重命名为布尔继续;
这是一种常见的策略。将布尔变量命名为一个“答案”为是或否或真或假的问题
这就意味着我们可以编写类似于的代码,而(canprocedure)
读起来非常容易。另请参阅
我希望这能有所帮助。每当你编写
if(boolean=true)
时,Java程序员都会死……这是一个赋值操作,总是返回true
。你需要if(boolean==true)
或者,实际上,if(boolean)
。这是Boris指出的一句冒犯的话:while(proceed2=true)。您应该在(proceed2)时重新编写它。检查是否需要帮助写入文件。除了boris所说的之外,您会遇到什么样的错误?此代码存在多个层次的问题。此代码需要重新分解。我将尝试进行一些简单的重构,以帮助解释您当前学习的一些Java语言问题,然后我将进一步进行她的建议。并非有意冒犯任何人,但谢谢你的提示。我意识到代码相当混乱。至于打印到文件,有什么想法吗?每当你写if(boolean=true)
时,Java程序员就会死……这是一个赋值操作,总是返回true
。你需要if(boolean)