Questions d'examen pratique de base décimal à hexadécimal

Questions d'examen pratique de base décimal à hexadécimal

Description du problème

Le nombre hexadécimal est une représentation d'entier souvent utilisée dans la conception de programmes. Il a 16 symboles de 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F , représentant les nombres décimaux de 0 à 15 . La méthode de comptage hexadécimal est hexadécimal 1 complet , donc le nombre décimal 16 est 10 en hexadécimal et le nombre décimal 17 est 11 en hexadécimal, et ainsi de suite, 30 décimal est en hexadécimal Le système est 1E.

Étant donné un entier non négatif, exprimez-le sous forme hexadécimale.

Description du format

Format d'entrée:

L'entrée contient un entier non négatif a, qui représente le nombre à convertir. 0 <= a <= 2147483647

Format de sortie:

Sortie de la représentation hexadécimale de cet entier

Cas de test

Exemple d'entrée:

30

Exemple de sortie:

1E

Analyse de cas de test

Entrez le nombre décimal représenté par la chaîne Binaire Hexadécimal
Cas de test 1 0 0000 0
Cas de test 2 30 00011110 1E
Cas de test 3 456 1 1100 1000 1C8
Cas de test 4 78945 1 0011 0100 0110 0001 1 3461
...... ...... ...... ......

Pensée des questions

Ici, j'ai principalement utilisé les méthodes suivantes:

Premièrement: la classe Long est utilisée pour éviter les débordements.

Deuxièmement: utilisez String toUpperCase (locale) pour mettre en majuscule tous les caractères de sortie de cette chaîne de caractères en utilisant les règles données.

Troisièmement: statique long parseLong (String s, int radix)
analyse le paramètre de chaîne en un long signé dans la base spécifiée par le deuxième paramètre.

Quatrièmement: static String toBinaryString (long i) renvoie la représentation sous forme de chaîne du paramètre long sous la forme d'un entier non signé en base 2.

Cinquième: static Long valueOf (String s, int radix) renvoie un
objet Long, qui enregistre la valeur de la String String spécifiée et l'analyse avec la base donnée par le deuxième paramètre.

Les connaissances ci-dessus sont effectuées à l'aide de l'API Java. Je vous suggère de vérifier l'API Java lorsque vous étudiez. Voici l'API que j'utilise, j'espère que cela vous sera utile.

Téléchargement de l'API

Lien disque réseau Baidu: https://pan.baidu.com/s/1fuzj93-nleSeH6dViQJszw
Code d'extraction: rr7r

La procédure est la suivante

Le premier programme, sur le système de la Blue Bridge Cup, n'a donné que 45 points, Gu n'est pas encore parfait et doit continuer à réfléchir.

code montrer comme ci-dessous:

import java.util.Scanner;

public class Main{
    
    
	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		String line = input.next();
		//System.out.println(tenToBinary(binToHex(line)));
		System.out.println(tenToBinary(line));
		System.out.println(binToHex(tenToBinary(line)));
	}
	
	//将十进制转换为二进制
	public static String tenToBinary(String string){
    
    
		return formatBinAddZero(Long.toBinaryString(Long.parseLong(string, 10)));
	}
	
	//将二进制转换为十六进制
	public static String binToHex(String bin){
    
    
		return Long.toHexString(Long.valueOf(bin, 2));
	}
	
	//将二进制的添加零情况
	public static String formatBinAddZero(String string){
    
    
		if(string.length() % 4 == 1){
    
    
			string = "000" + string;
		}
		if(string.length() % 4 == 2){
    
    
			string = "00" + string;
		}
		if(string.length() % 4 == 3){
    
    
			string = "0" + string;
		}
		return string;
	}
}

Après mon analyse, la raison est que la sortie par défaut de la console est constituée de lettres minuscules, une erreur sera donc signalée et Gu ne peut obtenir que 45 points.

Mauvaise analyse de programme

Dans le code ci-dessus, j'ai rarement ajouté une méthode pour convertir les lettres minuscules produites par la console en majuscules, j'ai donc fait une erreur.

Le point le plus important est: le code n'est pas assez concis, la robustesse est médiocre, le code est relativement redondant, il n'est pas recommandé de l'utiliser, vous pouvez vous y référer.

Source d'inspiration pour modifier le code

Le code modifié (correct) est le suivant:

import java.util.Scanner;

public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		String line = input.next();
		//观察,输入的十进制字符串能否正确的转换为二进制
		//System.out.println(tenToBinary(line));
		System.out.println(binToHex(tenToBinary(line)).toUpperCase());
	}
	
	//将十进制转换为二进制
	public static String tenToBinary(String string){
    
    
		return formatBinAddZero(Long.toBinaryString(Long.parseLong(string, 10)));
	}
	
	//将二进制转换为十六进制
	public static String binToHex(String bin){
    
    
		return Long.toHexString(Long.valueOf(bin, 2));
	}
}

Dans ce code, par rapport au code ci-dessus, j'ai seulement ajouté une méthode ** toUpperCase () ** qui convertit les lettres minuscules en lettres majuscules.

Peut apprendre des autres blogs, très simple

Écriture simple

Éclaircissement

Faites plus de pratique, lisez plus, apprenez les structures de données et les algorithmes, et soyez capable d'écrire très bien et parfait le code.

Vous avez également besoin d'une compréhension de base de l'utilisation de certaines classes de base. Par exemple , la différence entre Integer et Long

Doit apprendre à convertir entre les bases

Méthode de conversion de base de base

Doit être prudent

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45619069/article/details/113086484
conseillé
Classement