3 Câu hỏi: thao tác số nguyên bằng cách đọc chỉ mục của nó

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi có một giá trị số nguyên như 4590897, điều tôi phải làm là tôi phải xáo trộn số nguyên này theo cách để tôi có được đầu ra 4759980, giống như phát ra số đầu tiên và số cuối cùng và tạo một số mới. giá trị nguyên có thể là bất kỳ.

tôi đã thử một số mã như bằng cách chuyển đổi số trong mảng char và sau đó lặp lại nó và nối thêm nó trong StringBuilder nhưng không nhận được kết quả mong muốn. Mã bên dưới

public final class class2 {


public static void main(String[] args) {
    int a = 15670;
    StringBuilder s2 = new StringBuilder();
    String s1 = String.valueOf(a);
    char[] ch = s1.toCharArray();
    //System.out.println(ch.length);
    Outerloop:
    for(int i = 0; i <=ch.length-1;i++){
        //System.out.println(ch[i]);
        for(int j = ch.length-1; j >=0; j--){
            s2.append(ch[i]);
            s2.append(ch[j]);
            break;
        }

    }
    System.out.println(s2);
}

}

tôi phải xáo trộn số nguyên này theo cách để tôi có được đầu ra 4759980

    
- 2
  1. Bạn có nhắm mục tiêu cụ thể vào số 4759980 hoặc bất kỳ thứ tự ngẫu nhiên nào của các chữ số ban đầu không?
    2019-05-08 16: 20: 19Z
  2. số ngẫu nhiên, số có thể nằm trong khoảng [1-10000000]
    2019-05-08 16: 21: 24Z
  3. bạn có thể chia mảng thành hai phần. lấy từng cái một từ cuối phần thứ hai và đặt nó vào vị trí thay thế trong phần thứ nhất.
    2019-05-08 16: 37: 47Z
  4. Vui lòng làm rõ câu hỏi của bạn. Bây giờ không rõ ràng những gì bạn muốn. Lúc đầu tôi nghĩ bạn muốn một thứ tự ngẫu nhiên, nhưng đó có thể không phải là trường hợp. Bạn có nghĩa là bạn muốn xen kẽ giữa nhân vật đầu tiên và cuối cùng và sau đó làm việc theo cách của bạn vào trong?
    2019-05-08 16: 42: 35Z
  5. có chính xác đó là chính xác những gì tôi muốn
    2019-05-08 16: 43: 16Z
3 Câu trả lời                              3                         

Hãy thử điều này! Tôi lần đầu tiên chuyển đổi số thành một chuỗi. Sau đó, tôi thêm chữ số đầu tiên và chữ số cuối cùng, chữ số thứ hai và trước chữ số cuối cùng, v.v. Sau đó, tôi đảm bảo rằng chuỗi có cùng độ dài với số bắt đầu (trong trường hợp các số có số chữ số lẻ).

public int scramble(int number) {
    String numberString = Integer.toString(number);
    int numberLength = numberString.length();
    String result = "";
    for (int i = 0; i < (numberLength + 2) / 2; i++) {
        result += numberString.charAt(i);
        result += numberString.charAt(numberLength - i - 1);
    }
    //Making sure that the resulting string is the same length as the original
    //Initially, the result for a number with an odd number of digits, such as 12345
    //will be 152344. So you need to make sure the last digit is removed.
    result = result.substring(0, numberLength);
    return Integer.parseInt(result);
}
    
0
2019-05-08 16: 54: 44Z

Điều gì về điều này. Trước tiên, bạn phân tách số của mình thành các chữ số và sau đó bạn ngẫu nhiên thêm chúng lại với nhau, bằng cách chọn một vị trí ngẫu nhiên để thêm chữ số ...

public int scramble(int number) {

    //Convert the integer to an Array of strings where each string represents a digit
    String[] digits = Integer.toString(number).split("");

    //Add the individual digits to a list in random order, using a random position
    List<String> resultList = new ArrayList<>();
    for (String digit: digits) {
        int position = (int) (Math.random()*(resultList.size()));
        resultList.add(position, digit);
    }

    //Convert the list with digits in random order to a string
    String resultString ="";
    for (String digit: resultList) {
        resultString += digit;
    }

    //Convert the resulting string to an integer and return
    return Integer.parseInt(resultString);
}
    
0
2019-05-08 16: 32: 17Z
  1. Xin chào, cảm ơn bạn đã trả lời, tôi đã thử bạn chạy mã của bạn. nó chạy tốt nhưng không cho đầu ra mong muốn như đã vượt qua giá trị 130. Đầu ra dự kiến: 103. đầu ra có 301
    2019-05-08 16: 38: 42Z
  2. Bạn không nên mong đợi bất cứ điều gì, vì kết quả sẽ là ngẫu nhiên. Vì vậy, 13, 31, 103, 130, 301 hoặc 310.
    2019-05-08 16: 39: 38Z
  3. Vui lòng cập nhật câu hỏi của bạn. Không rõ bạn là ai sau đó (nếu không tôi sẽ không đưa ra câu trả lời này).
    2019-05-08 16: 41: 32Z
  4. nhưng điều kiện là tôi phải xáo trộn số theo cách nó đọc giá trị từ cả hai đầu và tạo số bị xáo trộn.
    2019-05-08 16: 42: 10Z

Lấy hai con trỏ, bắt đầu và kết thúc. Lặp lại qua chuỗi và nối thêm ký tự từ đầu và cuối đến một str mớiing. Bắt đầu tăng và kết thúc giảm cho đến khi bắt đầu và kết thúc là như nhau.

public static void main(String args[]){
      int num = 45908971;
      System.out.println(alternate(num));      
   }


   private static int alternate(int num){
      String numStr = Integer.toString(num);
      int start = 0;
      int end = numStr.length()-1;
      StringBuffer newNum = new StringBuffer();
      while(start<=end) {
         newNum.append(numStr.charAt(start++)).append(numStr.charAt(end--));
      }
      return Integer.parseInt(new String(newNum.toString()));
   }
    
0
2019-05-08 17: 27: 00Z
nguồn đặt đây