java变量怎么打出,在java中打印出不同方法的变量?

I have to use different methods for this code, no java shortcuts!

Here is my code:

import java.io.*;

import java.util.Scanner;

public class pg3a {

public static void main(String[] args) throws IOException {

Scanner keyboard = new Scanner(System.in);

String hex;

char choice = 'y';

boolean isValid = false;

do {

switch (choice) {

case 'y':

System.out.print("Do you want to enter a hexadecimal number? ");

System.out.print("y or n?: ");

choice = keyboard.next().charAt(0);

System.out.print("Enter a hexadecimal number: #");

hex = keyboard.next();

hex = hex.toUpperCase();

int hexLength = hex.length();

isValid = valid(hex);

if (isValid) {

System.out.println(hex + " is valid and equal to" + convert(hex));

}

else {

System.out.println(hex + " is invalid.");

}

case 'n':

System.out.println("quit");

}

}while (choice != 'n');

}

public static boolean valid (String validString) {

int a = 0;

if (validString.charAt(0) == '-') {

a = 1;

}

for (int i=a; i< validString.length(); i++) {

if (!((validString.charAt(i) >= 'a' && validString.charAt(i) <= 'f')|| (validString.charAt(i) >= 0 && validString.charAt(i) <= 9)))

{

return false;

}

}

return true;

}

How can I make it so that after the program checks all the parameters for the hexadecimal number and calculates what it should be in decimal form, it prints out that the hexadecimal number is valid and then what the decimal number is??

Also how can I make it a loop that ends with either ^z or ^d to end the program?

解决方案

To convert Strings representing hexadecimal numbers to Integer, you can use the Integer.toString(String, int); method:

Integer parsedValue = Integer.parseInt(hex, 16);

The first argument is the string to be converted, the second is the radix specification, hence is this value 16 for now.

To be complete, the Integer.toString(Integer, int) is the reverse if the above: it converts an Integer value to a string in the specified radix.

Just create a method named convert, and make it return this.

Printing an Integer is not a big issue, you can just concatenate it to any String using the + operator.

System.out.println("The value: " + parsedValue);

Also, keep in mind, that you have a little problem:

This line makes all the charachters uppercase in your string:

hex = hex.toUpperCase();

But here you check for lowercase letters:

if (!((validString.charAt(i) >= 'a' && validString.charAt(i) <= 'f')|| (validString.charAt(i) >= 0 && validString.charAt(i) <= 9)))

Either do hex=hex.toLowerCase();, or adjust the above condition to check to be between 'A' and 'F'.

Have to mention though that checking the validity of a String ot be converted to a numeric value is different: it tinvolves a try-catch block: try to convert the number, and if it fails, it is not valid...

Integer value; //have to declare it here to be able to access it outside of the try block

try {

value = Integer.parseInt(hex,16);

} catch(NumberFormatException e) {

//if you want to get the stack trace

e.printStackTrace(); //if not using a proper logging framework!!! Don't just print it!

//handle the situation: e.g. break loop, write eror message, offer retry for user, etc...

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值