2011-12-21 12 views
-4

アルファベット(コードの下)に特定の値を割り当て、入力文字列によって提供される 合計加算出力を計算したいと思います。例えば。 Kamran = 2 + 1 + 4 + 2 + 1 + 5 = 15またはabc = 1 + 2 + 3 = 6. このコードでは、最後の桁の出力しか得られません。 ありがとうございました!よろしく!あなたがループ内で追加されていませんJava:文字列入力に割り当てられた数値を取得する方法

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class p1 { 

    static int addition; 
    static char Kamran; 
    static int string1; 
    static int total; 
    final static int a=1,b=2,c=3,d=4,e=5,f=8,g=3,h=5,i=1,j=1,k=2,l=3,m=4,n=5,o=7,p=8,q=1,r=2,s=3,t=4,u=6,v=6,w=6,x=5,y=1,z=7; 

    public static void main(String[] args) throws IOException { 
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
     String userInput = in.readLine(); 
     for(int ai=0;ai<userInput.length();ai++){ 
      string1 = (int)userInput.charAt(ai); 
     } 
     int adder=0; 

     if(string1=='k') 
      {adder = 2 + adder ; } 
     if(string1=='a') 
      {adder = 1 + adder ; } 
     if(string1=='m') 
      {adder = 4 + adder ; } 
     if(string1=='r') 
      {adder = 2 + adder ; } 
     if(string1=='b') 
      {adder = 2 + adder ; } 
     if(string1=='n') 
      {adder = 5 + adder ; } 

     total=adder; 
     System.out.println(total); 
    } 
} 
+2

問題は? – Bozho

+2

あなたの追加はループの内側で起こらないのでしょうか? – Thilo

+0

最終的な静的変数はどこで使用されていますか? – shift66

答えて

0
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class p1 {  
     final static int a=1,b=2,c=3,d=4,e=5,f=8,g=3,h=5,i=1,j=1,k=2,l=3,m=4,n=5,o=7,p=8,q=1,r=2,s=3,t=4,u=6,v=6,w=6,x=5,y=1,z=7; 

     public static void main(String[] args) throws IOException { 
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
      String userInput = in.readLine(); 
      String input; 
      int adder = 0; 
      System.out.println(" userInput " + userInput); 
      for (int i = 0; i < userInput.length(); i++){ 
       input = userInput.charAt(i) + ""; 
       System.out.println(" input " + input); 
       if (input.equals("k")) 
        adder += k; 
       if (input.equals("a")) 
        adder += a;; 
       if (input.equals("m")) 
        adder += m;; 
       if (input.equals("r")) 
        adder += r; 
       if (input.equals("b")) 
        adder += b; 
       if (input.equals("n")) 
        adder += n; 
      }      
      System.out.println(" adder " + adder); 
     } 
} 
0
int adder=0; 
    for(int ai=0;ai<userInput.length();ai++){ 
     string1 = (int)userInput.charAt(ai); 
    if(string1=='k') 
     {adder = 2 + adder ; } 
    if(string1=='a') 
     {adder = 1 + adder ; } 
    if(string1=='m') 
     {adder = 4 + adder ; } 
    if(string1=='r') 
     {adder = 2 + adder ; } 
    if(string1=='b') 
     {adder = 2 + adder ; } 
    if(string1=='n') 
     {adder = 5 + adder ; } 
} 

System.out.println(adder); 

あなただけの最後の文字の値を取得します。

0

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.HashMap; 

public class Test { 


    /*final static int a = 1, b = 2, c = 3, d = 4, e = 5, f = 8, g = 3, h = 5, 
      i = 1, j = 1, k = 2, l = 3, m = 4, n = 5, o = 7, p = 8, q = 1, 
      r = 2, s = 3, t = 4, u = 6, v = 6, w = 6, x = 5, y = 1, z = 7;*/ 

    public static void main(String[] args) throws IOException { 
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
     String userInput = (in.readLine()).toLowerCase(); 

     HashMap<Character,Integer> hm = new HashMap<Character, Integer>(); 

     hm.put('a', 1);  hm.put('b', 2);  hm.put('c', 3);  hm.put('d', 4);  hm.put('e', 5); 
     hm.put('f', 8);  hm.put('g', 3);  hm.put('h', 5);  hm.put('i', 1);  hm.put('j', 1); 
     hm.put('k', 2);  hm.put('l', 3);  hm.put('m', 4);  hm.put('n', 5);  hm.put('o', 7); 
     hm.put('p', 8);  hm.put('q', 1);  hm.put('r', 2);  hm.put('s', 3);  hm.put('t', 4); 
     hm.put('u', 6);  hm.put('v', 6);  hm.put('w', 6);  hm.put('x', 5);  hm.put('y', 1); 
     hm.put('z', 7); 

     int total = 0; 

     for(int ai=0;ai<userInput.length();ai++){ 
      total+= hm.get(userInput.charAt(ai)); 
     } 

     System.out.println(total); 
    } 

} 
1

てみてください。この方法を試してみてください:

public int desiredMethod(String input, Function<Character, Integer> conversion){ 
     String inputRevised = input.toLowerCase(); 
     int output = 0; 
     for(int i=0 ; i<inputRevised.length() ; i++) 
      output = output + conversion.apply(inputRevised.charAt(i)); 
     return output; 
    } 

そのように、同じ方法では、複数のマップ文字»整数で使用することができます。

関連する問題