2014-01-31 59 views
0

我对编程非常陌生,所以我很乐意保持这种简单。编译器接受我的代码,但是当我运行该程序并键入例如字母A时,我只是遇到很多错误。我之前尝试使用String来代替int字母,但是我刚刚收到编译器错误,指出我无法将字符串转换为字符或其他东西。我很困惑,可以使用一个快速解释和修复,所以我可以得到一个数字。这里是我的代码:将大写字母输入转换为特定数字

import java.util.Scanner; 
import java.lang.String; 

public class PhoneAlgorithm { 
    public static void main(String[] args){ 

     int digit = -1; 
     Scanner in; 
     in = new Scanner(System.in); 

     System.out.print("Enter an uppercase letter to find out the corresponding digit on a telephone: "); 

     int letter; 
     letter = Integer.parseInt(in.next()); 

     if (letter == 'A' || letter == 'B' || letter == 'C') { 
      digit = 2; } 
     else if (letter == 'D' || letter == 'E' || letter == 'F') { 
      digit = 3; } 
     else if (letter == 'G' || letter == 'H' || letter == 'I') { 
      digit = 4; } 
     else if (letter == 'J' || letter == 'K' || letter == 'L') { 
      digit = 5; } 
     else if (letter == 'M' || letter == 'N' || letter == 'O') { 
      digit = 6; } 
     else if (letter == 'P' || letter == 'Q' || letter == 'R' || letter == 'S') { 
      digit = 7; } 
     else if (letter == 'T' || letter == 'U' || letter == 'V') { 
      digit = 8; } 
     else if (letter == 'W' || letter == 'X' || letter == 'Y' || letter == 'Z') { 
      digit = 9; } 
     else if (letter >= 'a' && letter >= '3') { 
      System.out.print("You did not enter a valid uppercase letter. Try again!"); 
     } 
     if (digit != -1) { 
      System.out.println("The corresponding digit on your telephone is: " + digit); 
     } 
    } 
} 
+1

确保列出您遇到哪些错误,不只是你遇到的错误。 (您可以编辑您的文章以包含此信息。) – BlackVegetable

回答

1

当您使用parseInt(str),你会得到一个Exception如果参数str不能转换为整数。

必须使用char,因为你的输入与单个字符比较:

char letter; 
letter = in.nextLine().charAt(0); 
  • str.charAt(index)返回指定索引的char值。
+0

谢谢!这工作!不过,我已经看过charAt,而且我非常困惑这意味着什么。我想我想知道的是为什么charAt必须设置为0?这到底是什么意思?如果你能指出我可以解释这一点的网站,我会很感激。我读过的每个站点实际上都让我困惑得更多...... – ghostpiano

+0

'str.charAt(0)'将返回字符串中的第一个字符。如果index为1,它将返回第二个字符。为什么?因为编程中的索引从0开始。所以,'0'是第一个元素,'1'是第二个元素,依此类推。 – Christian

+0

好的,谢谢基督徒!我对代码进行了大量的篡改,并了解现在正在发生的事情。我用一个while循环做了一些改进!我唯一的问题是,只要按下回车键,而不输入任何内容,程序就会崩溃,而且我一直在试着看看能否告诉代码识别出我根本没有输入任何内容,只需打印一个错误而不是崩溃,但到目前为止我没有任何运气! – ghostpiano

0

我已经修改了你的代码,我想这是你在找什么..

import java.util.Scanner; 

public class Try { 

public static void main(String[] args) { 

    //declarations 
    char letter; 
    int digit=0; 


    // Asking the user to enterstring 
    System.out.println("Enter the string"); 
    String enterString; 


    //creating a scanner object and reading the string 
    Scanner input = new Scanner(System.in); 
    enterString= input.next(); 
    System.out.println("Entered string is "+enterString); 

    int temp=0; 

    for(int i=0;i<enterString.length();i++){ 
     letter=(char)enterString.codePointAt(i); 

     if (letter == 'A' || letter == 'B' || letter == 'C') { 
      digit = digit*10+2; } 
     else if (letter == 'D' || letter == 'E' || letter == 'F') { 
      digit = digit*10+3; } 
     else if (letter == 'G' || letter == 'H' || letter == 'I') { 
      digit = digit*10+4; } 
     else if (letter == 'J' || letter == 'K' || letter == 'L') { 
      digit = digit*10+5; } 
     else if (letter == 'M' || letter == 'N' || letter == 'O') { 
      digit = digit*10+6; } 
     else if (letter == 'P' || letter == 'Q' || letter == 'R' || letter == 'S') { 
      digit = digit*10+7; } 
     else if (letter == 'T' || letter == 'U' || letter == 'V') { 
      digit = digit*10+8; } 
     else if (letter == 'W' || letter == 'X' || letter == 'Y' || letter == 'Z') { 
      digit = digit*10+9; } 
     else if (letter >= 'a' && letter >= '3') { 
      System.out.print("You did not enter a valid uppercase letter. Try again!"); 
     } 
     /*if (digit != 0) { 
      System.out.println("The corresponding digit on your telephone is: " + digit); 
     }*/   
    } 

    if (digit != 0) { 
     System.out.println("The corresponding digit on your telephone is: " + digit); 
    } 

} 

} 
相关问题