2016-07-25 100 views
-2

這是我的Java程序,它應該在給定的極限值之間打印霓虹燈數字。 如果一個數字的平方的所有數字的總和等於輸入的數字,則稱該數字爲氖。我寫了一個java程序,其運行結果正確,但運行程序時顯示無輸出

  1. 9 = 81
  2. 8 + 1 = 9

總和的廣場拜託,能不能有人解釋什麼是錯在這裏我目前的執行情況?

這是我的節目

import java.util.*; 
class neon 
{ 
    public static void main(String args[]) 
    { 
    Scanner me = new Scanner(System.in); 
    System.out.print(" What's about the lower limit ? "); 
    int l=me.nextInt(); 
    System.out.println(); 
    System.out.print(" What's about the upper limit ? "); 
    int h=me.nextInt(); 
    System.out.println(); 
    int sum=0; 
    for(int i=l;i<=h;i++) 
    { 
     int ii=i*i; 
     for(int j=0;j<3;j++) 
     { 
      int a=ii%10; 
      ii=ii/10; 
      sum=sum+a; 
      if(sum==i) 
      { 
       System.out.println(i+"\t"); 
       break; 
      } 
     } 

    } 
    } 
} 

回答

0

這爲我工作,試一試,讓我知道:

import java.util.*; 
class neon 
{ 
    public static void main(String args[]) 
    { 
    Scanner me = new Scanner(System.in); 
    System.out.print(" What's about the lower limit ? "); 
    int l=me.nextInt(); 
    System.out.println(); 
    System.out.print(" What's about the upper limit ? "); 
    int h=me.nextInt(); 
    System.out.println(); 
    for(int i=l;i<=h;i++) 
    { 
     int sum=0; 
     int ii=i*i; 
     while(ii!=0){ 
      int a=ii%10; 
      ii=ii/10; 
      sum+=a; 
     } 
     if(sum==i) 
     { 
      System.out.println(i+"\t"); 
      break; 
     } 
    } 
    } 
} 
0

你的第二環路for(int j=0;j<3;j++)在上部由3束縛,因此它不會對數字工作> 31(32 * 32 = 1024 => 4位)。

此外,您需要刪除那個break,因爲您沒有測試ii的所有數字。

0

我不能完全肯定你的代碼,但我只是做了一個小測試,我想你想要把你

int sum=0; 

到您的for循環,所以它得到了在每一個號碼重置測試範圍:

for(int i=l;i<=h;i++) 
    { 
     int sum=0; 
     int ii=i*i; 
     for(int j=0;j<3;j++) 
     { 
      //Your code 
     } 
    } 

這對我至少有效,希望它有幫助。

0
  • 您必須在for循環中添加sum = 0。
  • 從第二個for循環取出if循環並刪除break;
  • 建議:在內部循環中獲取平方根長度作爲上限。

下面你可以找到的代碼

public class neon 
{ 
    public static void main(String args[]) 
    { 
    Scanner me = new Scanner(System.in); 
    System.out.print(" What's about the lower limit ? "); 
    int l=me.nextInt(); 
    System.out.println(); 
    System.out.print(" What's about the upper limit ? "); 
    int h=me.nextInt(); 
    System.out.println(); 
    int sum; 
    for(int i=l;i<=h;i++) 
    { 
     sum=0; 
     Integer ii=i*i; 
     for(int j=0;j<=Integer.toString(ii).length();j++) 
     { 
      int a=ii%10; 
      ii=ii/10; 
      sum=sum+a; 
     } 
     if(sum == i) 
     { 
      System.out.println(i+"\t"); 
     } 
    } 
    } 
}