如何使用数据列表检查多行输入

时间:2017-06-20 15:43:36

标签: java

我试图让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;     
          }             
        }
      }
    }
  }
}

2 个答案:

答案 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语句。