Java大写字符转ASCII值问题求助:代码始终返回65
问题分析与解决
核心问题
你代码里的int ascii = (int) character;是在用户输入字符之前执行的,所以这个变量只会保存初始值'A'的ASCII码65,后续用户输入新字符后,ascii没有重新计算,导致输出永远是65。
另外,局部变量character必须显式初始化,直接声明char character;会报错,这是Java的语法要求——局部变量在使用前必须被赋值。
修正后的代码
import java.util.Scanner; public class CharConvertor { public static void main (String[] args) { Scanner input = new Scanner(System.in); // 初始化默认值,满足Java局部变量初始化要求 char character = ' '; System.out.println("Please enter an uppercase character: "); character = input.next().charAt(0); // 在用户输入后计算正确的ASCII值 int ascii = (int) character; // 转换为小写,用内置方法更安全通用 char lowerCaseChar = Character.toLowerCase(character); System.out.println(character + " in ASCII is " + ascii + "."); System.out.println("Its lowercase equivalent is: " + lowerCaseChar); } }
关键修改点
- 将
ascii的计算逻辑移到用户输入字符之后,确保基于用户实际输入的值计算ASCII码。 - 给
character设置初始占位符,避免未初始化错误。 - 新增小写转换功能,使用Java内置的
Character.toLowerCase()方法,比手动加减数值更适配所有字符场景。
内容的提问来源于stack exchange,提问作者user21426307
相关产品推荐
相关产品推荐

