java - 无法将 String 转换为 int,但两者都是字符串?

标签 java arrays string converter

我只是在为 Java 暑期类准备书中的一些练习,因为我有点超前了,这意味着这不是家庭作业。我收到一条错误消息,指出您无法将 String 转换为 int,但两者都是字符串,一个是变量,一个是数组。

我遇到问题的是这一行... select = items[select];

public class CarpentryChoice {

    public static void main(String[] args) {
        String items [] = {"Table", "Desk", "Chair", "Couch", "Lazyboy"};
        int price [] = {250, 175, 125, 345, 850};

        String select;

        Scanner scan = new Scanner(System.in);

        System.out.println("Please enter an item to view it's price: ");
        select = scan.nextLine();

        for(int i=0; i < items.length; i++) {
            select = items[select];
        }       
    }
}

最佳答案

因为 select 是一个 String 变量,所以它不能用作数组中的索引。

select = items[select];

我相信您打算在 for 循环中使用索引值 i(其中 i0items.length)。有点像

select = items[i];

但是,根据您在下面的评论,我相信您确实想要

int select = scan.nextInt();
System.out.println("You selected: " + items[select]);

根据您的编辑,您可以使用两个数组和两个循环来完成。类似的东西,

String items[] = { "Table", "Desk", "Chair", "Couch", "Lazyboy" };
int price[] = { 250, 175, 125, 345, 850 };
Scanner scan = new Scanner(System.in);
int pos = -1;
outer: while (pos == -1) {
    System.out.println("Please enter an item to view it's price: ");
    String select = scan.nextLine();
    for (int i = 0; i < items.length; i++) {
        if (items[i].equalsIgnoreCase(select.trim())) {
            pos = i;
            break outer;
        }
    }
}
if (pos != -1) {
    System.out.printf("The price is %d%n", price[pos]);
}

但是 Map 会(在我看来)是一个更好的解决方案(它肯定更有效)。喜欢,

String[] items = { "Table", "Desk", "Chair", "Couch", "Lazyboy" };
int[] price = { 250, 175, 125, 345, 850 };
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < items.length; i++) {
    map.put(items[i], price[i]);
}
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter an item to view it's price: ");
while (scanner.hasNextLine()) {
    String item = scanner.nextLine().trim();
    if (map.containsKey(item)) {
        System.out.printf("The price is %d%n", map.get(item));
    }
    System.out.println("Please enter an item to view it's price: ");    
}

关于java - 无法将 String 转换为 int,但两者都是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31107966/

相关文章:

java递归: best collection of numbers

arrays - 变量作为 for 循环中的标记

android - 将项目放在字符串数组中?

自 JDK 1.7 以来,Java Web Start 已损坏

java - 尝试将变量添加到新对象时发生InvocationTargetException

java - 包注释有什么意义?

c - 字符串数组 C

java - 为我的大学项目开发​​桌面应用程序

mysql - SQL 更新 - 删除字符串的最后 45 个字符

c++ - 'itoa' : function does not take 1 arguments & 'c' : undeclared identifier