- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 while 循环来检查数组中是否有匹配的数字。但是当有时,似乎循环变得无限并且不会停止运行
我对java很陌生,所以我还没有尝试很多东西,因为我不知道什么可行,什么不行。我相信问题出在 fyllArray 或 sjekkArray 内。注意:我是挪威人,所以我可以给自己命名的很多东西(变量?)都是挪威语,但我认为任何人都可以理解它。
import java.text.DecimalFormat;
import static javax.swing.JOptionPane.*;
class UnikeTall{
java.text.DecimalFormat df = new DecimalFormat("0.0");
static int[] array;
boolean likt = false;
int min = 1000;
int max = 0;
private void setArray(int lengde){
array = new int[lengde];
}
private boolean sjekkArray(int tall){
for(int i = 0; i < array.length; i++){
if(tall == array[i]){
likt = true;
}
}
if(likt != true){
likt = false;
}
return likt;
}
private void fyllArray(){
int tall = 0;
boolean sjekk = false;
for(int i = 0; i < array.length; i++){
while(!sjekk){
tall = (int) (Math.random() * (900) + (100));
sjekkArray(tall);
if(likt == true){
continue;
}
if(likt == false) {
sjekk = true;
}
}
sjekk = false;
array[i] = tall;
}
}
private String sjekkMin(){
String lavest;
for(int i = 0; i < array.length; i++){
if(array[i] < min){
min = array[i];
}
}
lavest = "Minste tall er: " + min;
return lavest;
}
private String sjekkMax(){
String størst;
for(int i = 0; i < array.length; i++){
if(array[i] > max){
max = array[i];
}
}
størst = "Største tall er: " + max;
return størst;
}
private double gjennomsnitt(){
int sum = 0;
double snitt;
for(int i = 0; i < array.length; i++){
sum += array[i];
}
snitt = sum / array.length;
return snitt;
}
public void kjorArray(){
String utskrift = "";
int antall = 0;
int lengde = Integer.parseInt(showInputDialog("Hvor langt skal arrayet være?"));
//The text in the input box translates to: "How long do you want the array to be?"
setArray(lengde);
fyllArray();
for(int i = 0; i < array.length; i++){
if(antall < 5){
utskrift += array[i] + " ";
antall++;
}
else if(antall == 5){
utskrift += "\n" + array[i] + " ";
antall = 1;
}
}
utskrift += "\n";
utskrift += sjekkMin();
utskrift += "\n";
utskrift += sjekkMax();
utskrift += "\n";
String gsnitt = df.format(gjennomsnitt());
utskrift += "Snittet er: " + gsnitt;
showMessageDialog(null, utskrift);
}
}
public class oppgaveOblig3{
public static void main(String[] args){
new UnikeTall().kjorArray();
}
我希望数组中的所有数字都不同。这种情况有时会发生,但我相信只有第一次尝试就有效时才会发生。当数组中有匹配的数字时,它就会停止。但是停止,我的意思是循环无限循环,我的代码在那一点停止。没有收到任何错误代码,因为我的程序仍在运行
最佳答案
我认为,sjekkArray
方法应该检查该值是否已在您的数组中。您的问题是因为您在 sjekkArray
中使用名为 likt
的对象变量将该测试的结果传递给调用函数 fyllArray
。但是您未能在 sjekkArray
开头将 likt
设置为 false。因为它是一个对象变量,所以一旦设置为 true,它将始终保持 true。
将 likt
设为 sjekkArray
中的局部变量,并在 fyllArray
中使用 sjekkArray
的返回值。
一般来说,代码中有很多不必要的复杂的处理方式。如果您能向有经验的程序员寻求指导,那就太好了。
关于java - 如果存在另一个匹配的数字(两个相同的数字),如何更改数组中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58561161/
我有 json 数据: { "products": [ { "productId" : 0, "productImg" : "../img/product-ph
我是一名优秀的程序员,十分优秀!