Java: 循环不工作,变量初始化错误
Java: loop doesn't work, errors with variables initialization
你能解释一下为什么这个循环在用户输入 "yes" 的情况下不起作用,以及为什么变量初始化有错误。
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner src;
String amount;
String counterparty;
String dt;
String ct;
System.out.println("Create new transaction:yes/no");
Scanner abc = new Scanner(System.in);
String g = abc.nextLine();
if (g=="yes") {
System.out.println("Amount of transaction:");
src = new Scanner(System.in);
amount = src.nextLine();
System.out.println("Counterparty:");
counterparty = src.nextLine();
System.out.println("Dt:");
dt = src.nextLine();
System.out.println("Ct:");
ct = src.nextLine();
}
else if (g=="no") {
amount="0";
}
System.out.println("Transaction:");
ArrayList <String> Provodka = new ArrayList();
Provodka.add(amount);
Provodka.add(counterparty);
Provodka.add(dt);
Provodka.add(ct);
for (int i = 0; i < Provodka.size(); i++) {
String value = Provodka.get(i);
System.out.println("Element: " + value);
}
}
}
只需初始化局部变量并使用 equals() 方法而不是“==”
public static void main(String args[]) {
Scanner src;
String amount = null;
String counterparty = null;
String dt = null;
String ct = null;
System.out.println("Create new transaction:yes/no");
Scanner abc = new Scanner(System.in);
String g = abc.nextLine();
if (g.equals("yes"))
{
System.out.println("Amount of transaction:");
src = new Scanner(System.in);
amount = src.nextLine();
System.out.println("Counterparty:");
counterparty = src.nextLine();
System.out.println("Dt:");
dt = src.nextLine();
System.out.println("Ct:");
ct = src.nextLine();
}
else if (g.equals("no")){
amount="0";
}
System.out.println("Transaction:");
ArrayList <String> Provodka = new ArrayList();
Provodka.add(amount);
Provodka.add(counterparty);
Provodka.add(dt);
Provodka.add(ct);
for (int i = 0; i < Provodka.size(); i++) {
String value = Provodka.get(i);
System.out.println("Element: " + value);
}
}
在字符串比较中,您将字符串与 '==' 进行比较。
使用 equals() 方法比较字符串。
例如:-
if ("yes".equals(g)){
}
首先,Scanner有很多不必要的声明。对扫描仪使用一个变量将适用于所有输入。其次,在 main 方法之上声明你的变量并使它们成为静态的,在这里你不需要总是初始化它们。最后,使用 g.equalsIgnoreCase("yes") 而不是 g == "yes",这样无论您是否在大写中键入 yes,它仍然会注册。试试下面的操作
public static String g;
public static String amount;
public static String counterparty;
public static String dt;
public static String ct;
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.println("Create new transaction:yes/no");
g= s.nextLine();
if (g.equalsIgnoreCase("yes")) {
System.out.println("Amount of transaction: ");
amount = s.nextLine();
System.out.println("Counterparty: ");
counterparty = s.nextLine();
System.out.println("Dt: ");
dt = s.nextLine();
System.out.println("Ct: ");
ct = s.nextLine();
}
else if (g.equalsIgnoreCase("no")) {
amount = "0";
}
System.out.println("Transaction:");
ArrayList <String> Provodka = new ArrayList();
Provodka.add(amount);
Provodka.add(counterparty);
Provodka.add(dt);
Provodka.add(ct);
for (int i = 0; i < Provodka.size(); i++) {
String value = Provodka.get(i);
System.out.println("Element: " + value);
}
}
}
你能解释一下为什么这个循环在用户输入 "yes" 的情况下不起作用,以及为什么变量初始化有错误。
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner src;
String amount;
String counterparty;
String dt;
String ct;
System.out.println("Create new transaction:yes/no");
Scanner abc = new Scanner(System.in);
String g = abc.nextLine();
if (g=="yes") {
System.out.println("Amount of transaction:");
src = new Scanner(System.in);
amount = src.nextLine();
System.out.println("Counterparty:");
counterparty = src.nextLine();
System.out.println("Dt:");
dt = src.nextLine();
System.out.println("Ct:");
ct = src.nextLine();
}
else if (g=="no") {
amount="0";
}
System.out.println("Transaction:");
ArrayList <String> Provodka = new ArrayList();
Provodka.add(amount);
Provodka.add(counterparty);
Provodka.add(dt);
Provodka.add(ct);
for (int i = 0; i < Provodka.size(); i++) {
String value = Provodka.get(i);
System.out.println("Element: " + value);
}
}
}
只需初始化局部变量并使用 equals() 方法而不是“==”
public static void main(String args[]) {
Scanner src;
String amount = null;
String counterparty = null;
String dt = null;
String ct = null;
System.out.println("Create new transaction:yes/no");
Scanner abc = new Scanner(System.in);
String g = abc.nextLine();
if (g.equals("yes"))
{
System.out.println("Amount of transaction:");
src = new Scanner(System.in);
amount = src.nextLine();
System.out.println("Counterparty:");
counterparty = src.nextLine();
System.out.println("Dt:");
dt = src.nextLine();
System.out.println("Ct:");
ct = src.nextLine();
}
else if (g.equals("no")){
amount="0";
}
System.out.println("Transaction:");
ArrayList <String> Provodka = new ArrayList();
Provodka.add(amount);
Provodka.add(counterparty);
Provodka.add(dt);
Provodka.add(ct);
for (int i = 0; i < Provodka.size(); i++) {
String value = Provodka.get(i);
System.out.println("Element: " + value);
}
}
在字符串比较中,您将字符串与 '==' 进行比较。 使用 equals() 方法比较字符串。 例如:-
if ("yes".equals(g)){
}
首先,Scanner有很多不必要的声明。对扫描仪使用一个变量将适用于所有输入。其次,在 main 方法之上声明你的变量并使它们成为静态的,在这里你不需要总是初始化它们。最后,使用 g.equalsIgnoreCase("yes") 而不是 g == "yes",这样无论您是否在大写中键入 yes,它仍然会注册。试试下面的操作
public static String g;
public static String amount;
public static String counterparty;
public static String dt;
public static String ct;
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.println("Create new transaction:yes/no");
g= s.nextLine();
if (g.equalsIgnoreCase("yes")) {
System.out.println("Amount of transaction: ");
amount = s.nextLine();
System.out.println("Counterparty: ");
counterparty = s.nextLine();
System.out.println("Dt: ");
dt = s.nextLine();
System.out.println("Ct: ");
ct = s.nextLine();
}
else if (g.equalsIgnoreCase("no")) {
amount = "0";
}
System.out.println("Transaction:");
ArrayList <String> Provodka = new ArrayList();
Provodka.add(amount);
Provodka.add(counterparty);
Provodka.add(dt);
Provodka.add(ct);
for (int i = 0; i < Provodka.size(); i++) {
String value = Provodka.get(i);
System.out.println("Element: " + value);
}
}
}