题目是这样的从键盘读入两个字符,按照字母表的顺序排序,将前面的字符置于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,也是不行,求高手修改!
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,也是不行,求高手修改!
这个有问题吧,没有学过输入输出流??、、
BufferedReader stdin =new BufferedReader(new InputStreamReader(System.in));
String str= stdin.readline();
然后你可以试着将str改为bytegood luck
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。
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);
}
}
}
而且你的判断也反了。