java - 为输入的每个字符分配一个值并显示输入的值

标签 java string loops if-statement for-loop

我正在尝试创建一个接受用户输入的程序,扫描每个子字符串并检查该字符是否与字母表中的位置匹配,如果匹配,我想获得分数字符串中的等效位置以获取分数该角色并显示每个角色的分数和总分。

我在下面的代码中应该已经完成​​了我想要做的每一部分,但是第二个 for 循环有问题,我找不到解决方案,我认为可能是里面的子字符串循环,但我不确定。

import java.util.*;
import java.io.*;
public class testt
{
    public static void main(String [] args) throws IOException
    {
        String alpha = "abcdefghijklmnopqrstuvwxyz";
        String score = "13321424185131139111144849";
        String result = "";
        int value = 0, total = 0;
        Scanner in = new Scanner(System.in);
        System.out.print("Enter word: ");
        String input = in.nextLine();
        if(input == null || input.length() == 0)
        {
            System.out.println("Enter input.");
            System.exit(0);
        }
        String inputLower = input.replaceAll("[^a-zA-Z ]", "").toLowerCase();
        String inputArray[] = inputLower.split("\\s+");
        for(int i = 0; i < alpha.length(); i++)
            if(inputLower.substring(i, i + 1) == alpha.substring(i, i + 1))
            {
                value = Integer.parseInt(score.substring(i, i + 1));
                if(value == 9)
                    value++;
                result += inputLower.substring(i, i + 1) + " will give you " + value + " point(s)\n";
                total += value;
            }
            else if(i == alpha.length() + 1)
            {
                System.out.println(result + "This word will earn you: " + total);
                System.exit(0);
            }

    }
}

任何建议或提示我都会非常感激,因为我认为我的程序已基本完成。

这是我正在学习的问题http://i.imgur.com/ftfcINX.jpg

最佳答案

您的实际代码显示了主要问题,我将指出:

  1. 您正在循环遍历 alpha.length 并且您有可能获得 进入StringIndexOutOfBoundsException所以最好检查一下i 不大于input.length
  2. 您正在使用substring(i,i+1)来获取该位置的字符 i 您可以将其替换为为此而设计的 .charAt(i)
  3. 如果给定单词​​中出现字符,您将退出应用程序 与 alpha 中相应的不匹配,所以你要退出 不检查输入的所有字符...

我尝试更正您的代码,这是我得出的结果:

    String alpha = "abcdefghijklmnopqrstuvwxyz";
    String score = "13321424185131139111144849";
    String result = "";
    int value = 0, total = 0;
    Scanner in = new Scanner(System.in);
    System.out.print("Enter word: ");
    String input = in.next();


    for(int i = 0; i < input.length(); i++) {

    if( i<alpha.length()) {
        if(input.charAt(i) == alpha.charAt(i))
        {
            value = Integer.parseInt(score.charAt(i)+"");
            if(value == 9)
                value++;
            result += input.charAt(i) + " will give you " + value + " point(s)\n";
            total += value;
        }
    }
    }
    System.out.println(result + "This word will earn you: " + total);

这是一个 Live DEMOalcme 作为输入并给出以下结果:

a will give you 1 point(s)
c will give you 3 point(s)
e will give you 1 point(s)
This word will earn you: 5

关于java - 为输入的每个字符分配一个值并显示输入的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220448/

相关文章:

c - 使用循环在数组中生成唯一随机数

java - 在 Facebook Graph API 中解析的数据不足

java - 从java连接到Berkeley DB的问题

java - 如何通过 Gradle Builder 将项目导出为 JAR 文件作为 lib?

c++ - Bison/Flex Concat 字符 *

javascript - 转换每个字符只有 8 位的 UTF-8 字符串

c - 我的 while 循环与 char 不起作用。请提供一些帮助

java - Java文件中import语句的含义

javascript - 将 JavaScript 函数输出变量作为字符串以在另一个函数中使用

java - 这些 switch 语句有哪些替代方案?