**很棒的家伙我让这个工作纠正我的比较和我的IF语句,但我现在正在控制台上打印信息,就像文件一样。没有更多的错误代码,但是控制台只是说java.io.PrintWriter .....关于如何使用outputFile和导入javax.swing.JOptionPane的任何指针?更正了以下代码
import java.io.File;
import java.util.Scanner;
import java.io.PrintWriter;
import javax.swing.JOptionPane;
public class StudentFile {
public static void main(String[] args) throws Exception {
// Declare and initialize variables
String studentSummary = "Student Summary Report";
String eligibleBachelorsReport = "Eligible Bachelors Report";
// input record
String firstName;
String lastName;
String gender;
int age;
String maritalStatus;
// counters
int marriedMen = 0;
int singleMen = 0;
int marriedWomen = 0;
int singleWomen = 0;
// create studentInput to read from StudentFile.txt
File inputFile = new File("StudentFile.txt");
Scanner input = new Scanner(inputFile);
while (input.hasNext()) {
// read name, gender, age, maritalStatus
firstName = input.next();
lastName = input.next();
gender = input.next();
age = input.nextInt();
maritalStatus = input.next();
if (gender.equals("F"))
{
if(maritalStatus.equals("M"))
{
marriedWomen = marriedWomen ++;
}
else {
singleWomen = singleWomen ++;
}
}
else if (maritalStatus.equals("M")){
marriedMen = marriedMen++;
}else{
singleMen = singleMen++;
}
if( age > 30) {
eligibleBachelorsReport += " "+firstName + " "+lastName;
}
System.out.println(firstName + " " + lastName + " " + gender + " " + age + " "
+ maritalStatus);
}
// write studentSummary, eligibleBachelorsReport to StudentReport.txt
PrintWriter outputFile = new PrintWriter("StudentReport.txt");
outputFile.println(studentSummary);
outputFile.println(eligibleBachelorsReport);
// write studentSummary, eligibleBachelorsReport to the console
System.out.println(studentSummary);
System.out.println(eligibleBachelorsReport);
JOptionPane.showMessageDialog(null, outputFile);
input.close();
outputFile.close();
}}
我试图让这段代码工作,我似乎无法弄清楚我做错了什么。我知道我正在尝试比较我导入/附加到此程序的此文本文件中的字符串数据,但似乎无法通过。
我的代码如下,我导入的txt文件标记为StudentFile.txt,并按以下顺序排列三行信息:姓名,性别,年龄,婚姻状况 例:Mick Jagger M 22 S
我做错了什么,为什么我会一直收到语法错误?我正在使用简单的日食,我通常可以通过使用他们的调试器找到我做错的事,但我有点卡住了。请帮忙! THX
import java.io.File;
import java.util.Scanner;
import java.io.PrintWriter;
import javax.swing.JOptionPane;
public class StudentFile {
public static void main(String[] args) throws Exception {
// Declare and initialize variables
String studentSummary = "Student Summary Report";
String eligibleBachelorsReport = "Eligible Bachelors Report";
// input record
String firstName;
String lastName;
String gender;
int age;
String maritalStatus;
// counters
int marriedMen = 0;
int singleMen = 0;
int marriedWomen = 0;
int singleWomen = 0;
// create studentInput to read from StudentFile.txt
File inputFile = new File("StudentFile.txt");
Scanner input = new Scanner(inputFile);
while (input.hasNext()) {
// read name, gender, age, maritalStatus
firstName = input.next();
lastName = input.next();
gender = input.next();
age = input.nextInt();
maritalStatus = input.next();
if (gender.equals(F)){
}if maritalStatus.equals(M)){
marriedWomen = marriedWomen ++;
} else {
singleWomen = singleWomen ++;
}else{
}if maritalStatus.equals(M)){
marriedMen = marriedMen ++
}else{
singleMen = singleMen ++
if age > 30 {
eligibleBachelorsReport += ""firstName + ""lastName
}
System.out.println(firstName + " " + lastName + " " + gender + " " + age + " "
+ maritalStatus);
}
// write studentSummary, eligibleBachelorsReport to StudentReport.txt
PrintWriter outputFile = new PrintWriter("StudentReport.txt");
outputFile.println(studentSummary);
outputFile.println(eligibleBachelorsReport);
// write studentSummary, eligibleBachelorsReport to the console
System.out.println(studentSummary);
System.out.println(eligibleBachelorsReport);
input.close();
outputFile.close();
}}
答案 0 :(得分:3)
查看字符串比较的性别:
gender.equals(F)){
}if maritalStatus.equals(M)){
您在此处使用裸令牌,并且不与字符串"M"
和"F"
进行比较。
同时查看该代码,您的语法错误 - 在许多if
语句中 - 如果是gender.equals("F")
则为空块,并且您将多个{{1}串在一起}语句,而不是使用中间else
。
这是不正确的:
else if
对于三个分支,您需要介入if (test)
{
}
else
{ ; }
else // wrong, can only have one final else
{ ; }
:
if
答案 1 :(得分:0)
if (gender.equals(F))
F
在您的代码中不是变量..您应该在这里使用“F”进行比较..
另外,您使用的if为: - if age > 30
..这不是正确的方法..
你需要括起括号: - if (age > 30)
答案 2 :(得分:0)
你说if (gender.equals(F))
,但是什么是F?这是你在某处定义的变量吗?我认为你更有可能指字符串“F”。同样适用于if (maritalStatus.equals(M))
(顺便说一下,缺少括号)
答案 3 :(得分:0)
代码有几个问题。我试着快速简历(显示每个案例的一个例子,其余的相关问题是相似的)到目前为止我所看到的并且我将更新答案,如果我发现更多:
gender.equals(F)
什么是F?,它不是定义的变量,也不是有效值。如果您想与字符串进行比较,则需要使用引号,例如"F"
。
if age > 30
大多数陈述需要()
来界定您要检查的内容。 if
语句就是其中之一,要求它像if(age > 30)
一样。另外,请记住,如果if包含多行代码,则需要使用括号。
eligibleBachelorsReport += ""firstName + ""lastName
在String
变量之前不需要使用引号来连接它们。不过,ig你想在字符串之间添加一个空格,做eligibleBachelorsReport += " " + firstName + " " + lastName + " - "
。最后的-
只是一个建议。请记住,如果你要将很多东西连在一起。此外,如果您需要插入换行符,可以使用\n
。
eligibleBachelorsReport += ""firstName + ""lastName
marriedMen = marriedMen ++
除此之外,这些行的末尾没有分号。
singleMen = singleMen ++
不是问题本身,而是不必要的。只需singleMen++
与singleMen = singleMen + 1
或singleMen += 1
相同。
最后,请查看if
语句。每else
只有一个if
,将其视为避免孤儿else
,因为没有与之相关的条件。结构是:
if(condition) {
} else {
}
或者,如果if
和/或else
只包含一行(很难,我总是使用括号。它允许更清晰地定义语句并提高可读性恕我直言。):
if(condition)
//code
else
//code
或者,以嵌套语句:
if(condition) {
} else if(condition2) {
} else if(condition3) {
}