public static void main(String[] args) { System.out.println(subInt(123456789, 4, 7));
} public static int subInt(int num, int left, int right) { if((left < 1) || (right < left)) { throw new IllegalArgumentException("arguments is invalid!"); } return (num % (int)pow(10, right)) / (int)pow(10, left - 1); } public static double pow(double base, int exponent) { if (exponent < 0) return 1 / pow(base, -exponent); double power = 1; while(exponent > 0) { if((exponent & 1) == 1) { power *= base; } base *= base; exponent >>= 1; } return power; } }
参数命名错了,改一下 public static int subInt(int num, int rightStart, int rightEnd) { if((rightStart < 1) || (rightEnd < rightStart)) { throw new IllegalArgumentException("arguments is invalid!"); } return (num % (int)pow(10, rightEnd)) / (int)pow(10, rightStart - 1); }
int a; a=a&0x78; a=a>>>3;
a = a>>> 3; System.out.println(Integer.toBinaryString(a));
转化为Sting然后substring4到7,如果有必要再转化成Interger
import java.util.*; public class SubNumber{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入一个7位以上的数字"); int a = sc.nextInt(); int b = 1000000; if(a<b){ System.out.println("你输入的数字没有到7位,不合要求!"); } String str = a+"";//这里的作用是把int类型的转换成String类型的 //可以用String的substring方法 String s = str.substring(3,7);//前面的包括,后面的不包括 int temp = Integer.parseInt(s); System.out.println("你要得到这个数的第4位到第7位:"+temp); } }
我认为应该是利用循环,求余的方法,截取4-7位, public class Intercepter{ public static void main(String[] args){ int a=12340567; int b; int c=4; //因为要截取第四位到第七位,如果把次数表小一千倍,则是第一到第四位 a=a/1000; //此时,a 因该是12340 for(int i=0;i<4;i++){ b=a%10; a=a/10; System.out.println("第"+c+"位是"+b); c++; } } } 大家一块讨论,我也是刚开始学习,还没一个月,希望大家多多指出我的不足之处。 谢谢。
先转换为String 类型 再调用indsxOf()方法
楼上的方法好 但是有个方法也的第一次见8楼的 a = a>>> 3; System.out.println(Integer.toBinaryString(a));不过好像是应为移位符很少用的缘故吧
我用的基础的方法做的...楼主可以测试下import java.util.Scanner; public class Left4_7 { public static void main(String[] args){ System.out.println("请输入一个数:"); Scanner sc=new Scanner(System.in); int x=sc.nextInt(); int y=1,z=x,i; for( i=0;;i++){
public static void main(String[] args) {
System.out.println(subInt(123456789, 4, 7));
} public static int subInt(int num, int left, int right) {
if((left < 1) || (right < left)) {
throw new IllegalArgumentException("arguments is invalid!");
}
return (num % (int)pow(10, right)) / (int)pow(10, left - 1);
} public static double pow(double base, int exponent) {
if (exponent < 0)
return 1 / pow(base, -exponent);
double power = 1;
while(exponent > 0) {
if((exponent & 1) == 1) {
power *= base;
}
base *= base;
exponent >>= 1;
}
return power;
}
}
if((rightStart < 1) || (rightEnd < rightStart)) {
throw new IllegalArgumentException("arguments is invalid!");
}
return (num % (int)pow(10, rightEnd)) / (int)pow(10, rightStart - 1);
}
a=a&0x78;
a=a>>>3;
System.out.println(Integer.toBinaryString(a));
import java.util.*;
public class SubNumber{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个7位以上的数字");
int a = sc.nextInt();
int b = 1000000;
if(a<b){
System.out.println("你输入的数字没有到7位,不合要求!");
}
String str = a+"";//这里的作用是把int类型的转换成String类型的
//可以用String的substring方法
String s = str.substring(3,7);//前面的包括,后面的不包括
int temp = Integer.parseInt(s);
System.out.println("你要得到这个数的第4位到第7位:"+temp);
}
}
public class Intercepter{
public static void main(String[] args){
int a=12340567;
int b;
int c=4;
//因为要截取第四位到第七位,如果把次数表小一千倍,则是第一到第四位
a=a/1000;
//此时,a 因该是12340
for(int i=0;i<4;i++){
b=a%10;
a=a/10;
System.out.println("第"+c+"位是"+b);
c++;
}
}
}
大家一块讨论,我也是刚开始学习,还没一个月,希望大家多多指出我的不足之处。
谢谢。
但是有个方法也的第一次见8楼的
a = a>>> 3;
System.out.println(Integer.toBinaryString(a));不过好像是应为移位符很少用的缘故吧
public class Left4_7 {
public static void main(String[] args){
System.out.println("请输入一个数:");
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
int y=1,z=x,i;
for( i=0;;i++){
x=x/10;
if(x==0){
break;
}
y=y*10;
}
for(int j=i+1;j>3;j--){
int m=z/y;
z=z%y;
y=y/10;
if(j<=7&&j>=3){
System.out.println(m);
}
}
}
}