1
for(int limit1=1; limit1<=1; limit1++){
System.out.print("Number of criteria (Max: 5): ");
int n = Integer.parseInt(inpt.readLine());
System.out.println();
if (n>5 || n<1){
    System.out.println("Sorry the maximum limit is 5");
    System.out.println("Please try again");
    System.out.println();
    limit1=limit1-1;
    continue;
}
double[] arrayCrit = new double[n];
double[] arrayPerc= new double[n];
String[] arrayCritName = new String[n];
double percentage=0, check=0, cent=0;
for (int i = 0; i < n; i++){
  System.out.print("Criteria("+(i+1)+"): ");
  arrayCritName[i] = inpt.readLine();
for(int limit2=1; limit2<=1; limit2++){
    if(n==1){
        arrayCrit[i] = 100/100;
        System.out.print("Percentage: 100%");
        break;
      }
  System.out.print("Percentage: ");
  arrayCrit[i] = Integer.parseInt(inpt.readLine()); 
      if(arrayCrit[i]>100 || arrayCrit[i]<1){
        System.out.println("Sorry, minimum value is 1 and maximum value is 100");
        System.out.println("Please try again");
        System.out.println();
        limit2=limit2-1;            
      }
        check=check+arrayCrit[i];   

     if(check>100 || check<1){
        System.out.println("User didn't meet the default percentage (100%)");
        System.out.println(check);
        check=check-arrayCrit[i];
        limit2=limit2-1;
        continue;   
}
 arrayCrit[i] = arrayCrit[i]/100;

}

}

您好,我在输入百分比时需要帮助。我想知道最后一个输入是否可以自动输入值。

例如:

  • 标准数量:3
  • 标准(1) - 出勤率
  • 百分比:25
  • 标准(2) - 测验
  • 百分比 - 25
  • 标准(3) - 考试
  • 百分比 - 50 <--- 自动出现,无需输入。

谢谢!

4

3 回答 3

1

更改您正在打印字符串百分比并读取它的代码段。它应该是这样的......

if(i != n-1)
{
   System.out.print("Percentage: ");
   arrayCrit[i] = Integer.parseInt(inpt.readLine()); 
   if(arrayCrit[i]>100 || arrayCrit[i]<1){
    System.out.println("Sorry, minimum value is 1 and maximum value is 100");
    System.out.println("Please try again");
    System.out.println();
    limit2=limit2-1;            
  }
}
else
{
   System.out.print("Percentage: 50");
}

而不是 50 放置包含该值的任何值/变量。

于 2013-10-17T11:51:17.937 回答
1

我清理并修复了您的代码:

-我将你的重试fors 更改为whiles。

-我删除了一些未使用的变量。

-我解决了你的自动价值问题。我了解您希望该自动值是 100 减去用户输入的所有先前百分比的总和。由于您正在保存check变量,因此当您到达最后一次执行 (n-1) 时,您只需打印 (100-check)。

这是代码:

System.out.print("Number of criteria (Max: 5): ");
int n = Integer.parseInt(inpt.readLine());
System.out.println();
while( n>5 || n<1 ){
    System.out.println("Sorry the maximum limit is 5");
    System.out.println("Please try again");
    System.out.println();

    n = Integer.parseInt(inpt.readLine());
}

double[] arrayCrit = new double[n];
String[] arrayCritName = new String[n];
double check=0;

for (int i = 0; i < n; i++){
    System.out.print("Criteria("+(i+1)+"): ");
    arrayCritName[i] = inpt.readLine();

    if(i == n-1){
        arrayCrit[i] = (100-check)/100;
        System.out.print("Percentage: "+(100-check)+"%");
        continue;
    }

    System.out.print("Percentage: ");

    while(true){
        arrayCrit[i] = Integer.parseInt(inpt.readLine()); 

        if(arrayCrit[i]>100 || arrayCrit[i]<1){
            System.out.println("Sorry, minimum value is 1 and maximum value is 100");
            System.out.println("Please try again");
            System.out.println();
            continue;
        } 

        check=check+arrayCrit[i];  

        if(check>100 || check<1){
            System.out.println("User didn't meet the default percentage (100%)");
            System.out.println(check);
            check=check-arrayCrit[i];
            continue;   
        }

        arrayCrit[i] = arrayCrit[i]/100;
        break;

    }
}
于 2013-10-17T12:06:21.357 回答
0

简单的解决方案是说“百分比 [默认值:50]”而不是“百分比”,并使用一些处理逻辑来查找用户是否实际键入了不同的数字。

更高级的解决方案是在 C 中使用一些行编辑库,如 GNU readline。对于 Java,有JLine

于 2013-10-17T11:51:52.163 回答