Java 不兼容的操作数类型字符串和字符语法错误

Java 不兼容的操作数类型字符串和字符语法错误,java,eclipse,joptionpane,Java,Eclipse,Joptionpane,**真棒的家伙,我用这个来纠正我的比较和IF语句,但我现在正在控制台上工作,将信息打印到文件上。并没有更多的错误代码,但控制台只显示java.io.PrintWriter…..关于如何使用outputFile和导入javax.swing.JOptionPane的任何指针?更正代码如下 import java.io.File; import java.util.Scanner; import java.io.PrintWriter; import javax.swing.JOptionPane;

**真棒的家伙,我用这个来纠正我的比较和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,有三行信息,按以下顺序排列:姓名、性别、年龄、婚姻状况 例:米克·贾格尔M 22 S

我做错了什么?为什么我总是出现语法错误?我使用的是EasyEclipse,通过使用他们的调试器,我通常可以找到我的错误所在,但我有点卡住了。请帮忙!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();
    }}

查看字符串的性别比较:

gender.equals(F)){
        }if maritalStatus.equals(M)){
您在这里使用的是裸令牌,而不是与字符串
“M”
“F”
进行比较

再看一下代码,你有一个语法错误,在你的很多
if
语句中,还有一个空块if
gender.equals(“F”)
,你把多个
else
语句串在一起,而不是使用中间
else if

这是不正确的:

if (test)
{

}
else
{ ; }
else // wrong, can only have one final else
{ ; }
对于三个分支,如果,则需要一个中间的

if (test)
{

}
else if (someOtherTest)
{

}
else // ok, one final else
{ ; }

查看字符串的性别比较:

gender.equals(F)){
        }if maritalStatus.equals(M)){
您在这里使用的是裸令牌,而不是与字符串
“M”
“F”
进行比较

再看一下代码,你有一个语法错误,在你的很多
if
语句中,还有一个空块if
gender.equals(“F”)
,你把多个
else
语句串在一起,而不是使用中间
else if

这是不正确的:

if (test)
{

}
else
{ ; }
else // wrong, can only have one final else
{ ; }
对于三个分支,如果
,则需要一个中间的

if (test)
{

}
else if (someOtherTest)
{

}
else // ok, one final else
{ ; }
F
在代码中不是变量。。你应该在这里用“F”来比较

此外,如果年龄>30岁,则使用if as:-
if。。这不是正确的方法。。
您需要在:-
if(年龄>30岁)

F
在代码中不是变量。。你应该在这里用“F”来比较

此外,如果年龄>30岁,则使用if as:-
if。。这不是正确的方法。。

你需要用括号括起来:——
如果(年龄>30)
你说的
如果(性别等于(F))
,那么F是什么呢?这是你在某处定义的变量吗?我想你更可能指的是字符串“F”。对于
if(maritalStatus.equals(M))
(顺便说一句,这是缺少的,是左括号)

你说
if(gender.equals(F))
,但是F是什么?这是你在某处定义的变量吗?我想你更可能指的是字符串“F”。对于
if(maritalStatus.equals(M))
(顺便说一句,它缺少了左括号)

代码有几个问题。我将尝试对我迄今为止所看到的内容做一份快速的简历(展示每个案例的一个示例,其余相关问题类似),如果我发现更多,我将更新答案:

gender.equals(F)
什么是F?它既不是定义的变量,也不是有效值。如果要与字符串进行比较,需要使用引号,如
“F”

大多数语句需要
()
来界定您要检查的内容。
if
语句就是其中之一,要求它类似于
if(年龄>30)
。另外,请记住,如果if包含多行代码,则需要使用括号

eligibleBachelorsReport += ""firstName + ""lastName
无需在
字符串
变量之前使用引号来连接它们。尽管如此,如果您想在字符串之间添加一个空格,请执行
eligibleBachelorsReport+=“”+firstName+“”+lastName+“-”
。最后的
-
只是一个建议。记住,如果你要把很多东西连接在一起。此外,如果需要插入换行符,可以使用
\n

eligibleBachelorsReport += ""firstName + ""lastName
marriedMen = marriedMen ++
这些行的末尾没有分号

singleMen = singleMen ++
不是问题本身,而是不必要的。只需执行
singleMen++
,这与
singleMen=singleMen+1
singleMen+=1
相同

最后,请检查您的
if
语句。每个
只有一个
else
,如果
,请将其视为避免孤立
else
,因为它们没有关联的条件。结构如下:

if(condition) {

} else {

}
或者,如果
if
和/或
else
仅包含一行(我总是使用括号。它可以更清晰地界定语句,并提高可读性):

或者,要嵌套语句:

if(condition) {

} else if(condition2) {

} else if(condition3) {

}

代码有几个问题。我将尝试对我迄今为止所看到的内容做一份快速的简历(展示每个案例的一个示例,其余相关问题类似),如果我发现更多,我将更新答案:

gender.equals(F)
什么是F?它既不是定义的变量,也不是有效值。如果要与字符串进行比较,需要使用引号,如
“F”

大多数语句需要
()
来界定您要检查的内容。
if
语句就是其中之一,要求它类似于
if(年龄>30)
。另外,请记住,如果if包含多行代码,则需要使用括号

eligibleBachelorsReport += ""firstName + ""lastName
无需在
字符串
变量之前使用引号来连接它们。尽管如此,如果您想在字符串之间添加一个空格,请执行
eligibleBachelorsReport+=“”+firstName+“”+lastName+“-”
。最后的
-
只是一个建议。记住,如果你要继续