字符串中的单个字符实例

时间:2014-12-08 19:01:45

标签: java string character

我想知道如何创建一个方法,我可以从一个字符串中获取单个实例,并给它一个numericValue,例如,如果有一个String a = "Hello what the hell"有4个字符,我想要从String a给出一个子字符串,它是Hello并给它数值。现在在我的程序中,它从字符串中获取所有字符实例,因此substring hello也会从子字符串中获取数字值,因为它也具有相同的字符。

我的代码:

public class Puzzle {


private static char[] letters =  {'a','b','c','d','e','f','g','h','i', 'j','k','l','m','n','o','p','q','r','s',
    't','u','v','w','x','y','z'};
private static String input;
private static String delimiters = "\\s+|\\+|//+|=";
public static void main(String[]args)
{
    input = "help + me = please";
    System.out.println(putValues(input));
}

//method to put numeric values for substring from input
@SuppressWarnings("static-access")
public static long putValues(String input)
{
    Integer count;
    long answer = 0;
    String first="";
    String second = "";
    StringBuffer sb = new StringBuffer(input);
    int wordCounter = Countwords();
    String[] words = countLetters();
    System.out.println(input);  

        if(input.isEmpty())
        {
            System.out.println("Sisestage mingi s6na");
        }
        if(wordCounter == -1 ||countLetters().length < 1){

            return -1;
        }
        for(Character s : input.toCharArray())
        {

         for(Character c : letters)
         {               
             if(s.equals(c))
             {
                count = c.getNumericValue(c) - 9;

                System.out.print(s.toUpperCase(s) +"="+ count + ", ");

             }              

         }
         if(words[0].contains(s.toString()))
         {

            count = s.getNumericValue(s);
            //System.out.println(count);
            first += count.toString();      


         }
         if(words[3].contains(s.toString())){

             count = s.getNumericValue(s);
             second += count.toString();
         }

        }
        try {

        answer = Long.parseLong(first)+ Long.parseLong(second);
        } catch(NumberFormatException ex)
        {
            System.out.println(ex);
        }

        System.out.println("\n" + first + " + " + second + " = " + answer);


    return answer;

}
public static int Countwords()
{
    String[] countWords = input.split(" ");
    int counter = countWords.length - 2;
    if(counter == 0) {
    System.out.println("Sisend puudu!");
    return -1;
    }
    if(counter > 1 && counter < 3) {
        System.out.println("3 sõna peab olema");
        return -1;
    }
    if(counter > 3) {
    System.out.println("3 sõna max!");
    return -1;
    }
    return counter;
}

//method which splits input String and returns it as an Array so i can put numeric values after in the
//putValue method
public static String[] countLetters()
{   

    int counter = 0;
    String[] words = input.split(delimiters);       
    for(int i = 0; i < words.length;i++) {

            counter = words[i].length();

         if(words[i].length() > 18) {
            System.out.println("One word can only be less than 18 chars");              
        }           
    }                                           
        return words;           
}

程序必须解决单词谜题,你必须猜测哪个数字对应于哪个字母使得给定的相等有效。每个字母必须对应一个不同的十进制数字,并且数字中不允许前导零。

例如,拼图SEND + MORE = MONEY只有一个解决方案:S = 9,E = 5,N = 6,D = 7,M = 1,O = 0,R = 8,Y = 2,给出9567 + 1085 = 10652。

1 个答案:

答案 0 :(得分:1)

import java.util.ArrayList;

public class main {

  private static String ChangeString;
  private static String[] ArrayA;
  private static String a;
  private static int wordnumber;
  private static String temp;
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    a = "hello what the hell";
    wordnumber = 0;
    identifyint(a,wordnumber);

}
public static void identifyint (String a, int WhichWord){

    ChangeString = a.split(" ")[WhichWord];

    ArrayA = a.split(" ");
    replaceword();
    ArrayA[wordnumber] = ChangeString;
    //System.out.print(ArrayA[wordnumber]);
    a = "";
    for(int i = 0; i<ArrayA.length;i++){
        if(i==wordnumber){
            a = a.concat(temp+ " ");
        }
        else{
            a = a.concat(ArrayA[i]+" ");
        }
    }
    System.out.print(a);
}
public static void replaceword(){
    temp = "";
    Character arr[] = new Character[ChangeString.length()];

    for(int i = 0; i<ChangeString.length();i++){
        arr[i] = ChangeString.charAt(i);
        Integer k = arr[i].getNumericValue(arr[i])-9;
        temp = temp.concat(""+k);
    }
    a = temp;
}


}

每次将wordnumber更改为您要替换的单词。如果这不是您要求的,请更详细地解释您的问题。