我试图让java接受x行数的输入并让它检查if else树是否输出每一行。我只能检查一行输入。请帮忙,我是编程Java的新手。 这就是我的脂肪:
package Javatest;
import java.util.Scanner;
public class Jtest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter Part Number: ");
String price = input.nextLine();
if("700212129".equals(price)){
System.out.println("$280.00");
}else{
if("100010B".equals(price)){
System.out.println("$52.50");
}else{
if("100030B".equals(price)){
System.out.println("$7.18");
}else{
if("1189A-BELDEN".equals(price)){
System.out.println("$140.00");
}else{
System.out.println("#N/A");
return;
}
}
}
}
}
}
答案 0 :(得分:2)
尝试提取每个部分的逻辑。这是一个实现,它单独初始化列表,等待输入,向下滚动东西并搜索代码以提取价格。
package Javatest;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;
public class Jtest {
private static final String EXIT_CODE = "exit";
private Set<Stuff> stuffs = new LinkedHashSet<Stuff>();
public static void main(String[] args) {
Jtest jtest = new Jtest();
jtest.initList();
while(true) {
System.out.println("Enter Part Number: ");
Scanner input = new Scanner(System.in);
String inputLine = input.nextLine();
if(inputLine.equals(EXIT_CODE)){
System.out.println("Exiting");
break;
}
String price = jtest.findPrice(inputLine);
System.out.println("Price: " + price);
}
}
private void initList() {
stuffs.add(new Stuff("700212129", "$280.00"));
stuffs.add(new Stuff("100010B", "$52.50"));
stuffs.add(new Stuff("100030B", "$7.18"));
stuffs.add(new Stuff("1189A-BELDEN", "$140.00"));
}
private String findPrice(String code) {
for(Stuff stuff: stuffs){
if(code.equals(stuff.getCode())){
return stuff.getPrice();
}
}
return "#N/A";
}
public static class Stuff {
private String code;
private String price;
public Stuff(String code, String price) {
this.code = code;
this.price = price;
}
public String getPrice(){
return this.price;
}
public String getCode(){
return this.code;
}
}
}
这是一个非常基本的实现,但它可以激发您构建更好的解决方案。
答案 1 :(得分:0)
您要做的第一件事就是从主要方法中学习拆分/解耦方法。将所有代码写在一个地方是不好的做法。
我要做的是将其分为两部分:
首先创建一个过程,从单个字符串输入中返回一个字符串,并在里面包含嵌套的if语句。
private static string GetString(string inputData)
{
if("700212129".equals(inputData)){
return "$280.00";
}else{
if("100010B".equals(inputData)){
return "$52.50";
}else{
if("100030B".equals(inputData)){
return "$7.18";
}else{
if("1189A-BELDEN".equals(inputData)){
return "$140.00";
}else{
return "#N/A";
}
}
然后在Main()中,使用循环来不断检查您输入的任何输入,使用While循环将是一个很好的示例,因为您可以使用escape子句来停止循环/程序。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter Part Number: ");
String value = input.nextLine();
String output;
While(value != "E")
{
output = GetString(value);
System.out.println("Value is: " + output);
}
}
我还建议将嵌套的If语句更改为Switch / Select语句。