题目是这样的从键盘读入两个字符,按照字母表的顺序排序,将前面的字符置于a,排到后面的字符置于b。请设计并实现该程序import java.util.*;
public class Test4
{
public static void main(String args[])
{
System.out.println ("请输入第一个字符:");
Scanner temp1=new Scanner(System.in);
String a1=temp1.nextLine();
byte a=Byte.parseByte(a1);

System.out.println ("请输入第二个字符:");
Scanner temp2=new Scanner(System.in);
String b1=temp2.nextLine();
byte b=Byte.parseByte(b1);

if(a>b)
{
System.out.println ("较前的字符为"+a);
System.out.println ("较后的字符为"+b);
}
else
{
System.out.println ("较前的字符为"+b);
System.out.println ("较后的字符为"+a);
}
}
}怎么我一打了一个字符进去以后就
请输入第一个字符:
i
Exception in thread "main" java.lang.NumberFormatException: For input string: "i"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:449)
    at java.lang.Byte.parseByte(Byte.java:151)
    at java.lang.Byte.parseByte(Byte.java:108)
    at Test4.main(Test4.java:9)Process completed.而且之前我还试过把byte转成String,也是不行,求高手修改!

解决方案 »

  1.   

    Scanner temp1=new Scanner(System.in);
    这个有问题吧,没有学过输入输出流??、、
    BufferedReader stdin =new BufferedReader(new InputStreamReader(System.in));
    String str= stdin.readline();
    然后你可以试着将str改为bytegood luck
      

  2.   

    我一直认为Scanner可以的  反正楼上的应该没有问题吧  我没试过哦
      

  3.   

    byte a=Byte.parseByte(a1);parseByte
    public static byte parseByte(String s)
                          throws NumberFormatException将 string 参数解析为有符号的十进制 byte。除了第一个字符可以是表示负值的 ASCII 负号 '-' ('\u002D') 之外,该字符串中的字符必须都是十进制数字。返回得到的 byte 值与以该 string 参数和基数 10 为参数的 parseByte(java.lang.String, int) 方法所返回的值一样。 参数:
    s - 要解析的包含 byte 表示形式的 String 
    返回:
    以十进制的参数表示的 byte 值 
    抛出: 
    NumberFormatException - 如果该 string 不包含一个可解析的 byte。
      

  4.   

    package com.xuz.csdn.worldcup.day22;import java.util.Scanner;public class Test4 {
    public static void main(String args[]) {
    System.out.println("请输入第一个字符:");
    Scanner temp1 = new Scanner(System.in);
    String a1 = temp1.nextLine();
    char a = a1.charAt(0); System.out.println("请输入第二个字符:");
    Scanner temp2 = new Scanner(System.in);
    String b1 = temp2.nextLine();
    char b = b1.charAt(0); if (a < b) {
    System.out.println("较前的字符为" + a);
    System.out.println("较后的字符为" + b);
    } else {
    System.out.println("较前的字符为" + b);
    System.out.println("较后的字符为" + a);
    }
    }
    }
    而且你的判断也反了。
      

  5.   

    parseByte不是你这样用的,它不能转换非数字字符的,具体的用法你查下api手册吧。
      

  6.   

    哎。以后也要学着多看api手册了。