[英]I need help with an assignment
我已經從事此編程工作大約3周了,無法弄清我的錯誤。 我必須使用兩個公共類:1)validateLength(Number)和2)convertIntegerToWords(Number)。 我的問題是,一旦用戶輸入了整數,我的循環就會永遠繼續下去。 系統將要求輸入整數,用戶輸入,系統退出時間太長或繼續使用convertIntgerToWords。 我的代碼如下
import java.util.Scanner;
public class Project2 {
public static void main(String [] args) {
//Main Method//
//Create a Scanner//
Scanner input = new Scanner(System.in);
//Enter an Integer//
System.out.print(" What is your integer ? ");
int Number= input.nextInt();
while (Number >= 0) {
if (Number != 0)
validateLength(Number);
else if(Number == 0) {
System.out.print( "Thank you for playing! " + "Good bye! ");
break;
}
}
}
//Next Method//
public static boolean validateLength(int userNum) {
String Number = "" + userNum;
while (userNum >= 0) {
if (userNum < 10)
convertIntegerToWords(userNum);
else if (userNum > 9){
System.out.print("Your integer is too long !");
break;
}
}
}
//End of validate//
//Final Method//
public static String convertIntegerToWords(int Number) {
if (Number == 1)
System.out.println("Your integer " + Number + "is written out as one");
else if (Number == 2)
System.out.println("Your integer " + Number + "is written out as two");
else if (Number == 3)
System.out.println("Your integer " + Number + "is written out as three");
else if (Number == 4)
System.out.println("Your integer " + Number + "is written out as four");
else if (Number == 5)
System.out.println("Your integer " + Number + "is written out as five");
else if (Number == 6)
System.out.println("Your integer " + Number + "is written out as six");
else if (Number == 7)
System.out.println("Your integer " + Number + "is written out as seven");
else if (Number == 8)
System.out.println("Your integer " + Number + "is written out as eight");
else if (Number == 9)
System.out.println("Your integer " + Number + "is written out as nine");
return Number + "";
}
}
}
你需要搬家
Number = input.nextInt();
在while
循環中。 這是典型的習慣用法(還添加了其他清理操作):
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
// Enter an Integer//
System.out.print(" What is your integer ? ");
int Number;
while ((Number = input.nextInt()) >= 0)
{
if (Number == 0)
{
System.out.print("Thank you for playing! " + "Good bye! ");
break;
}
validateLength(Number);
}
}
如果用戶輸入0,則是,程序終止。 但是,如果用戶輸入1到9的整數,則程序應使用單詞拼寫該整數(即1表示為1)。 它做到了,但循環無限。 與用戶輸入大於9的整數一樣,它報告“您的整數太大,請輸入另一個整數”。但是,此操作會在一遍又一遍地重復。
那是因為validateLength()
中的while
循環。 嘗試一下(也請注意其他代碼清除):
public class ScannerDemo
{
private static void convertIntegerToWords(int num)
{
String message = null;
if (num > 9)
{
message = "Your integer is too long!";
}
else if (num > 0)
{
message = "Your integer " + num + " is written out as ";
String numString = "";
switch (num)
{
case 1:
numString = "one"; break;
case 2:
numString = "two"; break;
case 3:
numString = "three"; break;
case 4:
numString = "four"; break;
case 5:
numString = "five"; break;
case 6:
numString = "six"; break;
case 7:
numString = "seven"; break;
case 8:
numString = "eight"; break;
case 9:
numString = "nine"; break;
}
message += numString;
}
System.out.println(message);
}
private static int getNextNumber(Scanner s)
{
System.out.println("What is your integer?");
return s.nextInt();
}
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int number;
while ((number = getNextNumber(input)) >= 0)
{
if (number == 0)
{
System.out.println("Thank you for playing! Good bye!");
break;
}
convertIntegerToWords(number);
}
}
}
它也在github上 。
您的while條件始終滿足,因此它將繼續通過while循環。 僅當Number不再大於或等於零時,它才會停止。
如果要使用循環,則需要完全使用其他某種條件(盡管在此示例中,我無法說出為什么要這樣做)。 您永遠不會更改與Number相關聯的值,因此它始終是實例化的值。 也許您打算讓代碼在特定條件下更改其值? 如果不是,則需要完全失去該條件。
while (Number >= 0) {
正在創建while循環,在該循環中,我看不到您減少Number整數以停止循環。 您是否需要在此處使用循環? 您應該嘗試使用if語句。
另外,您可能要考慮使用switch語句而不是if來輸出。
歡迎使用StackOverflow。
我覺得需要提到您有一個Project2
類和兩個方法而不是類。 你會得到一個int
不是整數,你無法讀取我懷疑是你的問題,除非你希望用戶輸入在第一行的一切下一行。
我建議您學習使用調試器,因為這對於查找調試和了解程序的作用非常有用。 esp表示不會結束的循環。
//Main Method//
public static void main(String [] args) {
//Create a Scanner//
Scanner input = new Scanner(System.in);
bool bPlay = true;
while (bPlay) {
//Enter an Integer//
System.out.print(" What is your integer ? ");
int Number= input.nextInt();
if (Number != 0)
validateLength(Number);
else if(Number == 0) {
System.out.print( "Thank you for playing! " + "Good bye! ");
bPlay = false;
break;
}
}
}
public static boolean validateLength(int userNum) {
String Number = "" + userNum;
while (userNum >= 0) {
if (userNum < 10)
convertIntegerToWords(userNum);
else if (userNum > 9){
System.out.print("Your integer is too long !");
break;
}
}
此代碼負責該問題,您永遠不會為userNum分配新值,而是在userNum> 0時循環。 這為數字> = 0和<10的無限循環提供了一個最佳位置。 (您將循環號保留為數字> 9)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.