因此,基本上,作业说我需要从用户那里得到一个数字'n',并且对于介于1到'n'之间的所有数字,该程序将打印出所有被除以3且没有残差的数字 && 仅打印两个(或一个)位数都等于或小于5的数字,例如,如果用户给出22个程序,则打印3,12,21
。
那是我目前为止所做的事情(我在问号上放的位置是我很难弄清楚该怎么做的地方),因此该代码尚未编译:
public static void main(String[] args) {
Scanner get = new Scanner(System.in);
int num;
System.out.println("Enter A Random Number: ");
num = get.nextInt();
for (int i=1;i>0 && i<=num;i++) {
if (i%3==0 && ?)
System.out.println(i);
答案 0 :(得分:0)
我对您的问题的第二部分有些困惑,但是基于第一部分以及第二部分的内容(应该打印等于或小于5的数字的总和) 这是您的程序的代码:(它应该可以正常运行,如果发现任何问题,请更新我的信息)
public static void main(String[] args) {
Scanner get = new Scanner(System.in);
int num;
System.out.println("User please enter a number of your choice : ");
num = get.nextInt();
for(int x = 1 ; x < num ; x++){
String number = ""+ x ;
int sum = 0 ;
for(int i = 0 ; i < number.length() ; i ++ ){
sum +=number.charAt(i)-'0' ; }
if(x % 3 == 0 && sum <= 5){
System.out.println(x) ; }
sum = 0 ;
}
}
答案 1 :(得分:0)
可以。因此,您必须遍历每个数字,因此我将其转换为字符串,然后将该字符的正则表达式匹配1到5,然后将其放回另一个字符串中,即可解决该问题。
public static void main(String[] args) {
Scanner get = new Scanner(System.in);
int num;
System.out.println("Enter A Random Number: ");
num =Integer.parseInt(get.nextLine());
for(int i =1;i<=num; i++){
if(i%3==0){
String input = Integer.toString(i);
String toPrint = "";
for(int j =0 ; j<input.length();j++){
if(Character.toString(input.charAt(j)).matches("^[1-5]$")){
toPrint+=Character.toString(input.charAt(j));
}
}
//check the length to avoid cases like 30,60 etc.
if(input.length()==toPrint.length()){
System.out.println(toPrint);
}
}
}
}
答案 2 :(得分:0)
除以3的残基
如果您了解“无残差”的含义,那么我认为您熟悉模运算。在编程中,我们有取模运算符%
,该运算符返回除法运算的余数。因此25 % 8
的值为1
。您可以使用它来获取数字21 % 10
的数字,该数字等于1
的数字。要获得十位数,我们需要先将10除以21 / 10 % 10
的结果为2。这是有效的,因为整数除法会丢弃余数。