[英]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”,這樣,如果您在CAPS中鍵入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);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.