Member 13583819 Ответов: 1

Как я могу сказать "return true, если строка является допустимой шестнадцатеричной строкой, false в противном случае" в java


Я пытался создать простой шестнадцатеричный десятичный конвертер для старого задания, и независимо от того, сколько я путешествую по интернету и читаю учебник, я не могу понять это задание за всю свою жизнь.

Вот данный код:

/***************************************************

  Name: 
  Date: 
  Homework #7
  
  Program name:        HexConversion
  Program description: Accepts hexadecimal numbers as input and converts each number to binary
                       and to the decimal equivalent.
                       Valid input examples: F00D, 000a, 1010, FFFF, Goodbye, GOODBYE
                       Enter GOODBYE (case insensitive) to exit the program.
  
****************************************************/

package hw8;

import java.util.Scanner;

public class HexConversion {

  public static void main(String[] args) {
    	
    // Maximum length of input string
    final byte INPUT_LENGTH = 4;
    	
    String userInput = "";                   // Initialize to null string
    Scanner input = new Scanner(System.in);

    // Process the inputs until GOODBYE is entered
    do {
      // Input a 4 digit hex number
      System.out.print("\nEnter a hexadecimal string, or enter GOODBYE to quit:  ");
      userInput = input.next().toUpperCase();
		  
      // Process the input
      switch (userInput) {
		  
        case "GOODBYE": break;
            
        default:        if (isValidHex(userInput, INPUT_LENGTH)) {
                          // The input is a valid hexadecimal string
				
                          // Convert the hexadecimal string to binary and print the binary number as a string
                          String binVal = hex2Bin(userInput, INPUT_LENGTH);
		                      
                          // Convert the hexadecimal string to decimal and print the decimal number
                          long decVal = hex2Dec(userInput, INPUT_LENGTH);
                          System.out.printf("      0x%s = %s in binary = %d in decimal (unsigned).\n", userInput, binVal, decVal);
                        }
			
                        else {
                          // String is either the wrong length or is not a valid hexadecimal string
                          System.out.printf("      The string %s is not a valid input.\n", userInput);
                        }
                        break;
        }
    } while (!userInput.equals("GOODBYE"));
		
    // Exit the program
    System.out.println("\nGoodbye!");
    input.close();
  }
 
  // Method to validate the input
  public static boolean isValidHex(String userIn, byte inputLen) {
    boolean isValid = false;
    	
    // If length of the input string is equal to inputLen, continue with validation,
    // otherwise return false
    if (userIn.TBD == inputLen) {
        
      // The length is correct, now check that the characters are legal hexadecimal digits
      for (int i = 0; i < TBD; i++) {
        char thisChar = userIn.TBD;
          
        // Is the character a decimal digit (0..9)? If so, advance to the next character
        if (Character.isDigit(thisChar)) {
          isValid = true;
        }
	        
        else {	
          // Character is not a decimal digit (0..9), is it a valid hexadecimal digit (A..F)?
          TBD
        }
      }
    }
        
    // Return true if the string is a valid hexadecimal string, false otherwise
    TBD
  }

    
  // Method to convert the hex number to a binary string
  public static String hex2Bin(String hexString, byte inputLen) {
    String binString = "";     // Initialize binString to null string
    	
    // Convert each hexadecimal digit to its binary equivalent
    for (int i = 0; i < TBD; i++) {
      char thisChar = hexString.TBD;
	        
      // Convert hexString to a binary string, e.g. F00D = 1111000000001101
      TBD
    }
  }
    
  // Method to convert the hex number to decimal number
  public static long hex2Dec(String hexString, byte inputLen) {
    	
    // Convert hexadecimal string to decimal, e.g. F00D = 61453 in unsigned decimal
    TBD
  }
}


Что я уже пробовал:

Я пытался преобразовать образцы в учебнике в это задание, но я его не понимаю. Я очень отчаялся и должен закончить эти задания как часть неполного с прошлого семестра. Пожалуйста, помогите мне, заполните и объясните разделы ТБД? Спасибо

Richard MacCutchan

Вы не "преобразуете шестнадцатеричный код в двоичный" или что-то еще. Просто считайте шестнадцатеричные цифры и преобразуйте их в допустимое целое число. Только когда вы распечатываете их, они нужны вам в двоичном, десятичном или любом другом формате.

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
Независимо от того, сколько я занимаюсь серфингом в интернете и читаю учебник, я не могу понять это задание

Прежде всего, шестнадцатеричное преобразование в десятичное или двоичное-это математика, а не магия. Вы должны понимать 'системы счисления', 'основы' и 'основы преобразования'.
Радикс - Википедия[^]
Похоже, вам также нужно научиться пользоваться поисковыми системами, потому что это классическая проблема и есть буквально миллионы ответов на любом языке.
Цитата:
объяснить секций будут определены?
TBD

То Бе Додин ? другими словами, "ваша домашняя работа", заполните пробелы.

Мы не делаем вашу домашнюю работу.
Домашнее задание не предназначено для проверки ваших навыков просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, которые вы испытываете при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по исправлению положения.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.