我正在为编程课程的介绍做一些额外的练习,我无法弄清楚我在下面的问题上做错了什么:
(友好号码)如果最左边的话,整数被认为是友好的 数字可以被1整除,最左边的两个数字可被2整除, 并且最左边的三个数字可以被3整除,依此类推。该 n位本身可以被n整除。例如,数字42325是 友好因为4可被1整除,42可被2整除,423是 可被3整除,4232可被4整除,42325可被5整除。
使用名称编写一般方法(带或不带递归) isFriendly,确定该号码是否“友好” 。写一个测试方法的主要方法是友好的。
我的计划如下: import java.util.Scanner;
public class Question4 {
public static void main(String args[]){
Scanner in = new Scanner(System.in);
System.out.print("Enter a number: ");
String input = in.nextLine();
}
public static String isFriendly(String input){
int n = input.length();
int number = Integer.parseInt(input);
String output = "";
for (int i = 0; i<=n; i++){
if (((n/10*i)%i) != 0 ){
output = "Friendly";
}else{
output = "Not friendly";
}
return output;
}
}
}
给出的错误是:&#34;结果必须返回String&#34;类型的结果。 我该怎么做才能解决这个问题,我能以更有效的方式编写这个程序吗? 非常感谢您考虑这个问题!
答案 0 :(得分:1)
试试这个:
public static String isFriendly(String input) {
if (input == null || input.length() == 0) return "Not friendly";
int n = input.length();
int number = Integer.parseInt(input);
for (int i = 0; i<=n; i++) {
if (((n/10*i)%i) == 0 ) {
return "Not friendly";
}
}
return "Friendly";
}
答案 1 :(得分:0)
请在这里尝试我的代码我使用StringBuilder类来获取每个实际的int然后将其转换为字符串然后在每次循环迭代时将其转换为int
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a number: ");
String input = in.nextLine();
System.out.println(isFriendly(input));
}
public static String isFriendly(String input)
{
int n = input.length();
String output = "";
StringBuilder sb = new StringBuilder("");
int myIntOutput=0;
for (int i = 0; i<n; ++i)
{
sb.append(input.charAt(i));
if (Integer.parseInt(sb.toString())%(i+1)==0)
{
myIntOutput++;
}
}
if(myIntOutput==n)
{
output="Friendly";
return output;
}
else
{
output="Not Friendly";
return output;
}
}
如果这有助于您考虑接受它作为答案