不知道是什么';正在发生-无错误(Java新功能)

不知道是什么';正在发生-无错误(Java新功能),java,if-statement,Java,If Statement,只要你肯教我,我随时准备学习。我只是在玩弄Java,因为它是我学习的最好方式。如果你觉得我的代码有什么可以改进的地方,我很乐意听听 我为自己准备的这个项目的总体目标是用Java创建一个程序来存储关于人的信息。然后将该信息传输到Tomcat服务器,我将设置运行SQL的服务器 现在,您已经了解了我的总体目标(我离目标还很远),我的问题如下: 我可以找到要求输入命令和名称等的代码部分。没问题。然而,当我输入“read”并按enter键时,它似乎跳过了我设置的else-if语句,直接进入else部分 编

只要你肯教我,我随时准备学习。我只是在玩弄Java,因为它是我学习的最好方式。如果你觉得我的代码有什么可以改进的地方,我很乐意听听

我为自己准备的这个项目的总体目标是用Java创建一个程序来存储关于人的信息。然后将该信息传输到Tomcat服务器,我将设置运行SQL的服务器

现在,您已经了解了我的总体目标(我离目标还很远),我的问题如下:

我可以找到要求输入命令和名称等的代码部分。没问题。然而,当我输入“read”并按enter键时,它似乎跳过了我设置的else-if语句,直接进入else部分

编辑:我更新了帖子,展示了解决问题的方法

工作代码:

import javax.print.DocFlavor.READER;

import java.util.ArrayList;
import java.util.Scanner;


public class Main {

public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);
    int total = 0;
    int years = 0;
    int invested =0;
    ArrayList<String> names = new ArrayList<String>(0);
    ArrayList<String> address = new ArrayList<String>(0);
    ArrayList<String> ids = new ArrayList<String>(0);
    Scanner sReader = new Scanner(System.in);

    while(reader.nextLine().toLowerCase().split(" ")[0] != "exit")
    {
    System.out.print("Enter Instruction: ");
    String n = reader.nextLine();
    String[] uin = n.toLowerCase().split(" ");
    if(uin[0].equals("add"))
    {
            try {
                System.out.println(add(Integer.parseInt(uin[1]),Integer.parseInt(uin[2])));
                } catch (NumberFormatException e) {
                System.out.println("Numbers Only");
                System.out.print(e.getMessage());
                } catch (Exception e){
                    System.out.println("ERROR");
                }
    }


    if(uin[0].equals("sub") || uin[0].equals("subtract"))
    {
            try {
                System.out.print(Integer.parseInt(uin[1])-Integer.parseInt(uin[2]));
                } catch (NumberFormatException e){
                System.out.println("Numbers Only");
                System.out.print(e.getMessage());
                } catch (Exception e){
                    System.out.println("ERROR");
                }

    }

    if(uin[0].equals("string"))
    {
        String string = "this is a string.";
        System.out.println(string.indexOf("cat"));
    }
    if(uin[0].equals("a"))
    {
        total+=Integer.parseInt(uin[1]);
        invested+=Integer.parseInt(uin[1]);
    }
    if(uin[0].equals("aa"))
    {
        total+=10000;
        invested+=10000;
    }
    if(uin[0].equals("bb"))
    {
        total-=55000;
        invested-=55000;
    }
    if(uin[0].equals("aq"))
    {
        for(int i = 0;i < Integer.parseInt(uin[1]);i++){
            total+=10000;
            invested+=10000;
            total*=1.06;
            years+=1;
        }
        years-=1;
    }
    if(uin[0].equals("exit"))
    {
        break;
    }
    if(uin[0].equals("entry")){
        for(int i=0;i==0;i+=0){
            System.out.print("Entry Command: ");
            String input = sReader.nextLine();
            if(input.equals("exit")){
                i = 1;
            }else if(input.equals("read")){
                for(int y=0;y<names.size();y++){
                    System.out.println("User #"+y);
                    System.out.println(names.get(y).toString());
                    System.out.println(address.get(y).toString());
                    System.out.println(ids.get(y).toString());
                }
            }else{
                System.out.print("Name: ");
                input = sReader.nextLine();
                names.add(input);
                System.out.print("Address: ");
                input = sReader.nextLine();
                address.add(input);
                System.out.print("ID: ");
                input = sReader.nextLine();
                ids.add(input);
            }
        }
    }
    total*=1.06;
    years+=1;
    double earn = Math.floor(total) * 0.06;
    System.out.println("Bank: " + total);
    System.out.println("Invested: " + invested);
    System.out.println("Yearly Earnings: " + earn);
    System.out.println("Years: " + years);
    }
}
public static int add(int n1, int n2){
int out;
try{
    out = (n1+n2);
    return(out);
}catch (Exception e){
    System.out.print("ERROR");
    return(0);
}
}
}
import javax.print.DocFlavor.READER;

import java.util.ArrayList;
import java.util.Scanner;


public class Main {

public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);
    int total = 0;
    int years = 0;
    int invested =0;
    ArrayList<String> names = new ArrayList<String>(0);
    ArrayList<String> address = new ArrayList<String>(0);
    ArrayList<String> ids = new ArrayList<String>(0);
    Scanner sReader = new Scanner(System.in);

    while(reader.nextLine().toLowerCase().split(" ")[0] != "exit")
    {
    System.out.print("Enter Instruction: ");
    String n = reader.nextLine();
    String[] uin = n.toLowerCase().split(" ");
    if(uin[0].equals("add"))
    {
            try {
                System.out.println(add(Integer.parseInt(uin[1]),Integer.parseInt(uin[2])));
                } catch (NumberFormatException e) {
                System.out.println("Numbers Only");
                System.out.print(e.getMessage());
                } catch (Exception e){
                    System.out.println("ERROR");
                }
    }


    if(uin[0].equals("sub") || uin[0].equals("subtract"))
    {
            try {
                System.out.print(Integer.parseInt(uin[1])-Integer.parseInt(uin[2]));
                } catch (NumberFormatException e){
                System.out.println("Numbers Only");
                System.out.print(e.getMessage());
                } catch (Exception e){
                    System.out.println("ERROR");
                }

    }

    if(uin[0].equals("string"))
    {
        String string = "this is a string.";
        System.out.println(string.indexOf("cat"));
    }
    if(uin[0].equals("a"))
    {
        total+=Integer.parseInt(uin[1]);
        invested+=Integer.parseInt(uin[1]);
    }
    if(uin[0].equals("aa"))
    {
        total+=10000;
        invested+=10000;
    }
    if(uin[0].equals("bb"))
    {
        total-=55000;
        invested-=55000;
    }
    if(uin[0].equals("aq"))
    {
        for(int i = 0;i < Integer.parseInt(uin[1]);i++){
            total+=10000;
            invested+=10000;
            total*=1.06;
            years+=1;
        }
        years-=1;
    }
    if(uin[0].equals("exit"))
    {
        break;
    }
    if(uin[0].equals("entry")){
        for(int i=0;i==0;i+=0){
            System.out.print("Entry Command: ");
            sReader = new Scanner(System.in);
            System.out.println(sReader.nextLine());
            if(sReader.nextLine().equals("exit")){
                i = 1;
            }else if(sReader.nextLine().equals("read")){
                System.out.println(names.size());
                System.out.println("yup");
                for(int y=0;y==names.size()-1;y++){
                    System.out.println(names);
                    System.out.println(names.get(y));
                    System.out.println(address.get(y));
                    System.out.println(ids.get(y));
                }
            }else{
                System.out.print("Name: ");
                sReader = new Scanner(System.in);
                names.add(sReader.nextLine());
                System.out.print("Address: ");
                sReader = new Scanner(System.in);
                address.add(sReader.nextLine());
                System.out.print("ID: ");
                sReader = new Scanner(System.in);
                ids.add(sReader.nextLine());
            }
        }
    }
    total*=1.06;
    years+=1;
    double earn = Math.floor(total) * 0.06;
    System.out.println("Bank: " + total);
    System.out.println("Invested: " + invested);
    System.out.println("Yearly Earnings: " + earn);
    System.out.println("Years: " + years);
    }
}
public static int add(int n1, int n2){
int out;
try{
    out = (n1+n2);
    return(out);
}catch (Exception e){
    System.out.print("ERROR");
    return(0);
}
}
}
import javax.print.DocFlavor.READER;
导入java.util.ArrayList;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪阅读器=新扫描仪(System.in);
int-total=0;
整数年=0;
int=0;
ArrayList名称=新的ArrayList(0);
ArrayList地址=新的ArrayList(0);
ArrayList ID=新的ArrayList(0);
Scanner sReader=新扫描仪(System.in);
while(reader.nextLine().toLowerCase().split(“”[0]!=“退出”)
{
系统输出打印(“输入指令:”);
字符串n=reader.nextLine();
字符串[]uin=n.toLowerCase().split(“”);
如果(uin[0]。等于(“添加”))
{
试一试{
System.out.println(add(Integer.parseInt(uin[1]),Integer.parseInt(uin[2]));
}捕获(数字格式){
System.out.println(“仅限数字”);
System.out.print(如getMessage());
}捕获(例外e){
System.out.println(“错误”);
}
}
如果(uin[0]。等于(“sub”)| uin[0]。等于(“减法”))
{
试一试{
System.out.print(Integer.parseInt(uin[1])-Integer.parseInt(uin[2]);
}捕获(数字格式){
System.out.println(“仅限数字”);
System.out.print(如getMessage());
}捕获(例外e){
System.out.println(“错误”);
}
}
if(uin[0]。等于(“字符串”))
{
String String=“这是一个字符串。”;
System.out.println(string.indexOf(“cat”));
}
如果(uin[0]。等于(“a”))
{
total+=Integer.parseInt(uin[1]);
invested+=Integer.parseInt(uin[1]);
}
if(uin[0]。等于(“aa”))
{
总数+=10000;
投资额+=10000;
}
if(uin[0]。等于(“bb”))
{
总数=55000;
投资额-=55000;
}
if(uin[0]。等于(“aq”))
{
对于(int i=0;i对于(int y=0;y它会出错,因为您正在执行
System.out.println(sReader.nextLine())
-这会自动获取最后一个输入(因此在您的示例中
“exit”
),但当您尝试执行
if(sReader.nextLine().equals(“exit”)
时,它会再次查找下一行

要修复此问题,可以将输入存储在变量中:

String input = sReader.nextLine();
System.out.println(input);
if (input.equals("exit")) {
    // etc
}

每次调用
sReader.nextLine()时,您都会阅读一行新的文本
。将结果存储在变量中,并在您的条件下使用该变量。欢迎使用堆栈溢出!看起来您需要学习使用调试器。请自行解决一些问题。如果以后仍有问题,请随时返回并提供更多详细信息。for循环看起来非常奇怪…
for(int y=0;y==names.size()-1、 y++{
可能不会被输入谢谢!这无疑将我推向了正确的方向并解决了问题。