Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java十进制到十六进制程序_Java_Netbeans - Fatal编程技术网

Java十进制到十六进制程序

Java十进制到十六进制程序,java,netbeans,Java,Netbeans,问题:(十进制到十六进制)编写一个程序,提示用户输入介于 0和15,并显示其相应的十六进制数。以下是一些运行示例: 输入十进制值(0到15):11 十六进制值是B 输入十进制值(0到15):5 十六进制值是5 输入十进制值(0到15):31 31是无效的输入 下面是我的代码。1.我真的不明白charAt(0),也不知道我做错了什么。1-9=1-9和10-15=A-F。我只能使用代码中的内容。没有特殊的toHexStrings案例或数组。这是基础的基础。我不明白为什么规则1被忽视,或者是否还有更多

问题:(十进制到十六进制)编写一个程序,提示用户输入介于 0和15,并显示其相应的十六进制数。以下是一些运行示例:

输入十进制值(0到15):11 十六进制值是B

输入十进制值(0到15):5 十六进制值是5

输入十进制值(0到15):31 31是无效的输入


下面是我的代码。1.我真的不明白charAt(0),也不知道我做错了什么。1-9=1-9和10-15=A-F。我只能使用代码中的内容。没有特殊的
toHexStrings
案例
数组
。这是基础的基础。我不明白为什么规则1被忽视,或者是否还有更多的问题

import java.util.Scanner;

public class NewClass1 {
    public static void main(String args[]) {              
    Scanner input = new Scanner(System.in);

        System.out.print("Enter a decimal value (0 to 15): ");
        String decimal = input.nextLine();

    // RULE1 
        char ch = decimal.charAt(0);
        if (ch <= 15 && ch >= 10) {
             System.out.println("The hex value is " + (char)ch);
        }

    // RULE2
        else if (ch <= 10 && ch >= 0) {
                System.out.println("Tsshe hex value is " + ch);
        }

    // RULE3
        else {
            System.out.println("Invalid input");
        }
    }
}
import java.util.Scanner;
公共类新类别1{
公共静态void main(字符串args[]){
扫描仪输入=新扫描仪(System.in);
系统输出打印(“输入十进制值(0到15):”;
字符串decimal=input.nextLine();
//规则1
char ch=十进制字符(0);
如果(ch=10){
System.out.println(“十六进制值为”+(char)ch);
}
//规则2
否则如果(ch=0){
System.out.println(“TSHE十六进制值为“+ch”);
}
//规则3
否则{
System.out.println(“无效输入”);
}
}
}
规则1被忽略了,我不明白为什么。现在是凌晨2点,我已经干了4个小时了。没有尖刻的评论,因为如果我知道如何解决这个问题,我就不会在这里了。我需要一些帮助来理解错误

更新2: 导入java.util.Scanner

 public class NewClass1 {
     public static void main(String args[]) {              
     Scanner input = new Scanner(System.in);

         System.out.print("Enter a decimal value (0 to 15): ");
         int decimal = input.nextInt();


         if (decimal <= 15 && decimal  >= 10) {
              System.out.println("The hex value is " + (char)decimal );
         }

         else if (decimal  < 10 && decimal  >= 0) {
                 System.out.println("The hex value is " + decimal );
         }

         else {
             System.out.println("Invalid input");
        }
     }
 }
公共类NewClass1{
公共静态void main(字符串args[]){
扫描仪输入=新扫描仪(System.in);
系统输出打印(“输入十进制值(0到15):”;
int decimal=input.nextInt();
如果(十进制=10){
System.out.println(“十六进制值为”+(字符)十进制);
}
else if(十进制<10&&decimal>=0){
System.out.println(“十六进制值为”+十进制);
}
否则{
System.out.println(“无效输入”);
}
}
}
规则1起作用,但不会从数字中生成字符/字母。我必须将其设置为变量吗

更新3:

import java.util.Scanner;

public class NewClass1 {
    public static void main(String args[]) {              
    Scanner input = new Scanner(System.in);

        System.out.print("Enter a decimal value (0 to 15): ");
        int decimal = input.nextInt();

   // RULE1
        if (decimal <= 15 && decimal  >= 10) {
            int value = decimal - 10 + 10;
             System.out.println("The hex value is " + (char)value );
        }
   // RULE2
        else if (decimal  < 10 && decimal  >= 0) {
                System.out.println("The hex value is " + decimal );
        }
   // RULE3
        else {
            System.out.println("Invalid input");
        }
    }
}
import java.util.Scanner;
公共类新类别1{
公共静态void main(字符串args[]){
扫描仪输入=新扫描仪(System.in);
系统输出打印(“输入十进制值(0到15):”;
int decimal=input.nextInt();
//规则1
如果(十进制=10){
整数值=十进制-10+10;
System.out.println(“十六进制值为”+(字符)值);
}
//规则2
else if(十进制<10&&decimal>=0){
System.out.println(“十六进制值为”+十进制);
}
//规则3
否则{
System.out.println(“无效输入”);
}
}
}
我觉得我很接近,但结果对于规则1仍然无效

更新4:工作版本

import java.util.Scanner;

public class NewClass {
    public static void main(String args[]) {              
    Scanner input = new Scanner(System.in);

        System.out.print("Enter a decimal value (0 to 15): ");
        int decimal = input.nextInt();


        if (decimal <= 15 && decimal  >= 10) {
            int value = ('A' + decimal - 10);
            System.out.println("The hex value is " + (char)value );
        }

        else if (decimal  <= 10 && decimal  >= 0) {
                System.out.println("The hex value is " + decimal );
        }

        else {
            System.out.println("Invalid input");
        }
    }
}
import java.util.Scanner;
公共类新类{
公共静态void main(字符串args[]){
扫描仪输入=新扫描仪(System.in);
系统输出打印(“输入十进制值(0到15):”;
int decimal=input.nextInt();
如果(十进制=10){
整数值=('A'+十进制-10);
System.out.println(“十六进制值为”+(字符)值);
}
else if(十进制=0){
System.out.println(“十六进制值为”+十进制);
}
否则{
System.out.println(“无效输入”);
}
}
}

现在一切正常。谢谢大家!!谢谢Pham Trung.

而不是以字符串形式阅读:

    String decimal = input.nextLine();

// RULE1 
    char ch = decimal.charAt(0);
只需读入整数:

   int ch = input.nextInt();
因为,当您以字符串形式读入时,例如,“15”,结果是第一个字符将是
1
,类似地,每当输入数字大于9时,您的
char ch
总是
1

对于规则1中的更新,您需要执行以下操作:

  System.out.println("The hex value is " + (char)(value + 'A'));
因为,对于“A”,等效整数值是65,所以上面的技巧将帮助您。更多详细信息

decimal.charAt(0)将为您提供输入的第一个符号。因此,如果输入“12”,结果将仅为“1”。您可以使用
Scanner
classs的
nextInt()
方法

要将dec转换为十六进制,可以使用
Integer.toHexString()
方法。没有必要做像
+'A'
..

这样的黑客行为,尤其是使用JDK和。这两种方法都是JDK的基本方法。不需要摆弄哪个
char
s

String[] sa = new String[]{"-1", "0", "1", "11", "15", "31"};
for (String s : sa) {
    int i = Integer.parseInt(s);
    if (i > 0 && i <= 15) {
        System.out.println("hex(" + s + ")= " + Integer.toHexString(i));
    } else {
        System.err.println("invalid input: " + s);
    }
}

你现在认为charAt是做什么的?我“认为”它应该调用一个与数字对应的字符/符号。不,它返回字符本身。所以“15”。字符(0)=“1”,但“1”不是1。“没有特殊的
到hextstrings
案例
数组
”,而且我在这本书中还不足以理解
解析
我讨厌那些连最基本的工具都不允许你使用的问题:(@ChrisRedfieldea如果您使用的是
Scanner
,而只是使用
nextInt
。我对
charAt(0)感到困惑)
但是Fame和Kiril澄清了这一部分。我只是想弄清楚剩下的部分,希望我自己能得到它。=/更新了我的回答。我在书中没有看到如何获得小数输入的字符/字母。哦……这就澄清了这个问题。请给我一些时间返工,看看是否还有其他路障更新我的回答,如果你能看一眼的话。
if(decimal=10){int value=('a'+decimal-10);System.out.println(“十六进制值是”+(char)value);
我不太明白
invalid input: -1
invalid input: 0
hex(1)= 1
hex(11)= b
hex(15)= f
invalid input: 31