不知道发生了什么 - 没有错误(Java新手)
问题描述:
只要你教我,我就可以学习。我只是在谈论Java,因为它是我学习的最佳方式。如果你发现任何你认为我可以在代码中改进的东西,我很乐意听到它。不知道发生了什么 - 没有错误(Java新手)
我为自己准备的项目的总体目标是用Java创建一个存储有关人员信息的程序。然后将该信息传输到Tomcat服务器,我将设置运行SQL。
现在你明白我的总体目标(我是从它很远),我的问题是:
我可以去询问我一个条目的命令和名称等代码的一部分没问题。但是,当我输入“read”并按下回车键时,它似乎跳过else语句,我已经设置并直接进入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);
}
}
}
答
这是怎么回事错了,因为你正在做System.out.println(sReader.nextLine())
- 这自动获得最后的输入(所以"exit"
在你的例子) 。但是当你试图做if (sReader.nextLine().equals("exit"))
它正在寻找下一行。
要解决,你可以输入存储在一个变量:
String input = sReader.nextLine();
System.out.println(input);
if (input.equals("exit")) {
// etc
}
+0
谢谢!这绝对推动我朝着正确的方向解决问题。 – SWB
你继续阅读文本的每次调用'sReader.nextLine时间()新行'。将结果存储在变量中,并在您的条件中使用该变量。 –
欢迎来到堆栈溢出!它看起来像你需要学习使用调试器。请帮助一些[互补调试技术](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之后仍然有问题,请随时返回更多详情。 –
你for for循环看起来很奇怪...'for(int y = 0; y == names.size() - 1; y ++){'可能不会输入 –