Jusing java .tail.map和java.util.linkhepsmap?

问题描述 投票:0回答:2

我是Java的新手(以及一般的编程)。我正在开发一个个人项目,用户键入一个字符,将其转换为另一个字符。更具体地,用户将键入日语字符的罗马化,日语平假名等效项被输出到日语字符。我目前正在使用两个单独的课程:

Roma Hi RA core.Java

import java.util.*;

public class RomaHiraCore
{
public static void main(String[] args)
    {
    Table.initialize();  // Table.java needed!
    Map<String, String> table = Table.getTable();
    Scanner roma = new Scanner(System.in);
    System.out.println("Romaji: ");
    String romaji = roma.nextLine().toLowerCase();

    if (table.containsKey(roma))
    {
        System.out.println(table.get(roma));
    }
    else
    {
        System.out.println("Please enter a valid character (e. g. a, ka)");
    }
    roma.close();
    }
}

tables.Java

import java.util.*;
public class Table
{
    private static Map<String, String> table = new LinkedHashMap<>();
    public static Map<String, String> getTable()
    {
    return table;
    }
public static void initialize()
    {
    // a - o
    table.put("a", "あ");
    table.put("i", "い");
    table.put("u", "う");
    table.put("e", "え");
    table.put("o", "お");
    // ka - ko
    table.put("ka", "か");
    table.put("ki", "き");
    table.put("ku", "く");
    table.put("ke", "け");
    table.put("ko", "こ");
    }
}

如果有人能指出我正确的方向,我将非常感激。我试图查看文档,但我似乎无法掌握它(也许我正在过度思考它)。当我运行程序时,它允许我输入一个字符;但是,它只会继续使用“else”语句,而不是扫描Table.java以查看输入是否与列出的任何值匹配。要么我忽略了某些东西,要么完全不同地使用完全不同的方法。

java string java.util.scanner
2个回答
0
投票

在main方法中,您当前正在存储用户输入的字符串值,但是您从未在其他任何地方访问该变量。

您编写了table.containsKey(roma)但是roma是Scanner对象而不是他们输入的字符串,因此您应该使用table.containsKey(romaji)检查该字符串是否是有效密钥。

接下来,在你的else子句中,你要求他们重新输入一个输入但是从不给他们机会,因为你只是终止了扫描器。

你应该做的是更像这样的事情。

String romaji = roma.nextLine().toLowerCase();

while (true) {
    if (table.containsKey(romaji)) {
        System.out.println(table.get(romaji));
        break;
    }
    else {   
        System.out.println("Enter a valid char:";
        romaji = roma.nextLine().toLowerCase();
    }
}
roma.close();

1
投票

在地图中,您有String键,并且您提供的String位于romaji变量中。所以你的if应该是这样的:if (table.containsKey(romaji))。更重要的是,在这种情况下,我认为使用LinkedHashMap不会给你任何东西,简单的HashMap会像LinkedHashMap一样好(甚至更好),因为你不需要维护你的角色的插入顺序。

© www.soinside.com 2019 - 2024. All rights reserved.