在这里我找到最多3位的八进制数,如果条件可以任何人减去这个if语句和值分配我使用冗长。请注意,不要使用prdefined进程或内置包..
import java.util.Scanner;
class octdec
{
public static void main(String arg[])
{
int back=0;
do
{
Scanner ip = new Scanner(System.in);
int no,mod1,mod2,mod3,diff1,diff2,diff3,num1,num2,num3;
System.out.print("Enter Octal No upto 3 digits : ");
no=ip.nextInt();
mod1=no%10;
mod2=no%100;
mod3=no%1000;
diff1=no-mod1;
diff2=no-mod2;
diff3=no-mod3;
num1=diff1/10;
num2=diff2/100;
num3=diff3/1000;
if(no==8||no==9||mod1==8||mod1==9||mod2==8||mod2==9||mod3==8||mod3==9||num1==8||num1==9||num2==8||num2==9||num3==8||num3==9)
System.out.println("Invaild Octal Nimber ");
else
System.out.println("Vaild Octal Nimber :"+no);
}
while(back==0);
}
}
答案 0 :(得分:5)
您可以使用以下正则表达式仅匹配八进制数字:
^0[1-7][0-7]*$
所以基本上这个正则表达式只匹配那些在开头有0的字符串,并且包含1到7之间的一个或多个数字。
如果不存在前导0要求,则可以使用正则表达式:
^[1-7][0-7]*$
答案 1 :(得分:1)
您可以解析通过基数的数字,如下所示
try{
String number="30";
int i=Integer.parseInt(number,8); // returns the integer represented by the string argument in the specified radix.
System.out.println("Octal Number");
} catch(NumberFormatException e) {
System.out.println("Not an octal number");
}
如果给定的数字不是八进制,则抛出NumberFormatException.
这里8是基数或基数 - 表示八进制数
答案 2 :(得分:1)
尝试ip.nextInt(8)
这将确保输入值必须为八进制,但return
为输入八进制值的十进制值
答案 3 :(得分:0)
我认为你不应该把它读作十进制整数,然后试着找出它是否是八进制(所以你读错了,必须转换它)。您最好将其作为字符串读取,然后检查或尝试将其解析为八进制。
@gowtham告诉你如何转换和@ murtaza.webdev告诉你如何检查字符串。
答案 4 :(得分:0)
尝试此方法
/**
*
* @param octalInput
* @return boolean flag that determines value input by user is a valid octal number
*/
public static boolean isValidOctalInput( String octalInput )
{
return octalInput.matches( "[0-7]*$" );
}
答案 5 :(得分:0)
在C ++中,但出现了:
static constexpr std::string_view prefixes[] = { "0o", "0", "o", "q" };
std::string_view val("q777");
size_t index = 0;
for (const auto prefix : prefixes) {
if (val.rfind(prefix, 0) == 0) {
index = prefix.length();
break;
}
}
bool isOctal = index == 0 || val.length() <= index ? false :
std::count_if(val.begin() + index, val.end(), [](const char c) {
return isdigit(c) && c <= '7';
}) == val.length() - index;
答案 6 :(得分:0)
还有另一个实用程序:
import java.util.Scanner;
public class IsOctal_Check {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter Number : \n");
String input = sc.nextLine();
System.out.println("isOctal : "+isOctal(input));
}
public static boolean isOctal(String octal) {
boolean isOctal = false;
if (octal != null && !octal.isEmpty()) {
int number = Integer.parseInt(octal);
while (number > 0) {
if (number % 10 <= 7) {
isOctal = true;
} else {
isOctal = false;
break;
}
number /= 10;
}
}
return isOctal;
}
}